1、说到性能监控,首先需要明确监控的相关指标,对于tomcat而言,主要包括:响应时间,吞吐量,错误率,CPU占用率,线程池线程数量以及内存使用率等。其中前3个是业务角度的指标,后3个是系统资源角度的指标,但他们之间并不互相独立,而是彼此关联影响。指标有了,那如何监控呢?Tomcat 通过 JMX(java management extensions 即java管理扩展)的方式将这些指标的值暴露出来,此时 Tomcat 可理解为一个 JMX Server, 而 Jconsole 作为一个 JMX Client 来获取相关指标数据。
2、首先,我们需要开启 Tomcat 的 JMX 远程监控端口:1. 在 tomcat 根目录下的bin子目录中的 catalina.bat 文件中添加如下配置项,注四歹吭毳意,这里配置使用了 9988 端口,你可以配置使用其他端口 (jconsole连接时需要指定该端口)(图示):set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9988 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false2. 重启 tomcat
3、启动 JConsole JMX客户端连接 JMX 服务器JConsole是JDK自带的一款应用程序,在 JDK 根目录下的 bin子目录中(图1示)。打开一个命令行窗口,执行如下命令 (注意就是连接上面tomcat开启的jmx端口):jconsole 127.0.0.1:9988 运行后,会弹出一个控制台窗口, 这是 jconsole 的概览界面 (图2示)
4、通过 JConsole 查看指标响应时间,吞吐量,错误墙绅褡孛数点击 jconsole 控制台窗口上面的 MBean 页签,在打开的界面中,点击右侧的 “Catalina”-->"GlobalRequestProcessor" , 点击选择tomcat对外监听的端口(图示9090端口),在下面的属性中包含如下内容:1. maxTime : 在所有请求处理中,最长耗时时间(图1示)2. requestCount 和 processingTime, 前者代表处理的总请求数,后者代表处理的总时间,通过这两个值,可以计算出吞吐量(图2示)3. errorCount 错误数量,通过 errorCount 和 requestCount 可以计算一个错误率(图3示)
5、通过 JConsole 查看指标CPU, 线程,内存1. CPU,这个指标可以在概览界面上查看,代表tomcat占用的cpu数据(图1示)2. 线程,点击上方的线程页签,即可查看该指标(图2示)3. 内存,点击上方的内存页签,即可查看该指标(图3示)