Tomcat监控与调优:probe监控_tomcat监控工具

这是一款 Tomcat 管理和监控工具,前身是 Lambda Probe。由于 Lambda Probe 2006不再更新,所以 PSI Probe 算是对其的一个 Fork 版本并一直更新至今。

psi-probe是在相同的开源许可证(GPLV2)下分发的社区驱动的 Lambda Probe ,psi-probe的前身是 Lambda Probe,由于Lambda Probe 2006之后不再更新,所以psi-probe算是对其的一个 Fork版本并一直更新至今。它的目的是替换和扩展 Tomcat 管理器,使得管理和监视 Apache Tomcat 的实例更容易。与许多其他服务器监控工具不同,psi-probe不需要对现有应用程序进行任何更改。它通过一个Web可访问的接口提供它的所有特性,只需将它部署到服务器即可。

使用psi-probe监控的步骤如下:

1. 安装probe

目前我们一般都是安装psi-probe的版本,将下载的安装包解压缩,放进webapps目录。

2. 配置用户与角色

使用probe监控工具时,会提醒输入登录的用户信息,该登录的用户信息角色必须为manage-gui。在tomcat-users.xml文件中配置即可。具体的代码如下:

conf/tomcat-users.xml文件中添加以下代码
//设置角色名
//设置用户

3. 重启Tomcat服务器

tomcat停止
./usr/local/apache-tomcat-8.5.31/bin/shutdown.sh
tomcat启动
./usr/local/apache-tomcat-8.5.31/bin/startup.sh

4. 进入监控界面

http://ip:port/probe
例如
http://192.168.40.133:8080/probe/

监控界面的信息如图10-20所示。

监控界面的内容主要包括:Applications、Data Sources、Deployment、Logs、Threads、Cluster、System、 Connectors、Certificates和Quick check

1. Applications

Applications标签页的内容如图10-21所示。

applications中主要显示所有应用程序相关的情况,表示服务器上运行的应用程序的情况。

STATUS列:表示应用程序运行的状态。

REQ.列:表示应用程序所接受到的HTTP请求数。

sess.列:表示发送请求使用到的session数。

JSP列:表示发布程序所有JSP文件。

Application statistics显示所有应用程序的统计信息:所有应用程序的请求数、每个应用程序的请求数、所有应用程序响应的时间(ms)、每个应用程序平均响应时间(ms),如图10-22所示。

2. Data Sources

表示所配置的数据源,如果没有配置就不会显示这个内容。

3. Deployment

可以在当前页面下上传jar包到服务器端,对服务器进行更新程序。

4. Logs

该标签页主要是显示了日志的相关信息,如图10-23所示

这里显示日志文件名、日志大小、日志更新时间、以及涉及到的类的信息。

单击日志文件链接可以查看日志文件信息,这个日志信息内容就是Tomcat目录下的日志信息,一样的,日志内容如下:

at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
26-Apr-2020 22:05:28.532 信息 [main] org.apache.coyote.AbstractProtocol.pause  Pausing ProtocolHandler ["http-nio-8080"]
26-Apr-2020 22:05:28.532 信息 [main] org.apache.coyote.AbstractProtocol.pause  Pausing ProtocolHandler ["ajp-nio-8009"]
26-Apr-2020 22:05:28.532 信息 [main]  org.apache.catalina.core.StandardService.stopInternal Stopping service  [Catalina]
26-Apr-2020 22:05:29.062 警告 [localhost-startStop-1]  org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web  application [opencarrun] appears to have started a thread named [Thread-3] but  has failed to stop it. This is very likely to create a memory leak. Stack trace  of thread:
java.lang.Thread.sleep(Native Method)
org.apache.log4j.net.SocketAppender$Connector.run(SocketAppender.java:440)
26-Apr-2020 22:05:29.089 信息 [main] org.apache.coyote.AbstractProtocol.stop  Stopping ProtocolHandler ["http-nio-8080"]
26-Apr-2020 22:05:29.089 信息 [main] org.apache.coyote.AbstractProtocol.destroy  Destroying ProtocolHandler ["http-nio-8080"]
26-Apr-2020 22:05:29.090 信息 [main] org.apache.coyote.AbstractProtocol.stop  Stopping ProtocolHandler ["ajp-nio-8009"]
26-Apr-2020 22:05:29.090 信息 [main] org.apache.coyote.AbstractProtocol.destroy  Destroying ProtocolHandler ["ajp-nio-8009"]

当然要看的懂这个日志信息,就必须了解这些JAVA类,否则可能很难看明白。

如果有需要也可以将这个日志文件下载下来。

5. Threads

线程标签页主要显示服务器线程池的信息,如图10-24所示。

单击左上角的“Threads Pools”链接,会显示线程池相关的参数信息,如图10-25所示。

这个界面显示了当前线程数、当前正在忙的线程、最大线程数、最大空闲线程数和最小空闲线程数。关于线程的参数在server.xml文件中可以来设置。

6. Cluster

Cluster标签页主要是显示集群相关的信息,

7. System

System主要是显示系统相关的信息,如图10-26所示。

Memory utilization这里显示了主的内存和内存使用情况,单击“Advise Garbage Collection” 选项可以对内存进行回收。下面是服务器操作系统相关的信息。

单击右侧Memory Utilization选项,会显示出所有关于内存使用的信息,包括HEAP(堆)和NON_HEAP(非堆)的信息。如图10-27所示。

如果要看懂图里面的信息,特别是关于HEAP(堆)和NON_HEAP(非堆),很多读者可能理解起来比较晕。所以必须对JVM有着深入的理解,关于JVM的内容在10.4章节中会有详细的介绍。上面显示了堆中三代使用内存的情况以及相关的参数信息,但是在现在的最新版的JVM并没有分成三代,而是将持久代换成了元空间。

下面的则显示出了所有代所消耗内存的情况。这个消耗的内存正常一定是锯形状,就是一高一低的,因为GC会在后面回收内存。所以看到的就是一下多一下少的。

关于内存使用是我们监控Tomcat的一个很重要数据。所以我们必须要看的懂这些数据和这些曲线图。

8. Connectors

Connectors标签页主要显示了连接器相关的信息,如图10-28所示。

这里显示了所有连接器处理请求的情况:每秒钟处理的请求数、讲求的响应时间、请求的字节数等。下面显示还是了我们客户端访问服务器的相关资源信息。

9. Certificates

Certificates标签页显示了证书相关的信息。

10. Quick check

Quick check标签页显示了检查服务器状态的一些信息。主要包括以下信息

Datasource test PASSED (Max usage 0%)
Memory test PASSED
File creation test: PASSED
Application test: PASSED