05-tomcat监控和调优
一、命令或函数监控方法
1.tomcat自带函数检测
可以使用memtest.war这个文件中的meminfo.jsp进行监控内存,里面已经调用tomcat自带的命令写好了一个脚本
2.jps命令[※]
JDK包自带的命令,主要用来输出jvm中运行的进程状态信息
1)语法格式:
jps [options] [hostid]
如果不指定hostid就默认为当前主机或服务器。
参数说明:
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全名
-v 输出传入JVM的参数
2)用法示例
快速获取Java进程的pid,不用ps和grep
1 | [root@xxx ~]# jps -lvm |
3.show-busy-java-threads脚本[※]
此脚本是一个比较著名的脚本,执行后可以排序显示繁忙的java程序的信息,一般用来排查故障,如下

4.jstack监控[※]
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。
上面的脚本知道繁忙的线程后,后jstack命令获取详细信息然后发给开发或自己研究
jstack 73855 >/tmp/busy_java.log
5.jsconslse和jvisualvm
windows下jdk安装后附带的图形监控工具。c:\program files\java\jdk1.8.0_31\bin

二、zabbix监控tomcat
1.监控流程
数据获取流程:java poller《——》javagateway:10052《——》tomcat:12345
- zabbix_server开启java poller
- zabbix_java开启javagateway,端口为10052
- tomcat开启12345端口提供性能数据
2.安装依赖程序
1 | #yum源-centos6 |
yum安装的zabbix需要增加安装以下程序
1 | yum install -y java java-devel zabbix-java-gateway |
源码安装的时候需要加–enable-java,如果安装的时候没有此参数需要重新编译
3.开启tomcat远程监控功能
1)修改tomcat配置
需要tomcat开启远程监控功能,开启方法如下
1 | [root@xxx ~]# vim /application/tomcat/bin/catalina.sh +97 |
2)做hosts解析并重启tomcat
hosts解析–略
1 | /app/tomcat/bin/shutdown.sh |
4.启动zabbix(server和javagateway)
1)修改server配置文件
1 | sed -ri 's#\# (JavaGateway=)#\1 127.0.0.1#g' /etc/zabbix/zabbix_server.conf |
2)启动服务
1 | /etc/init.d/zabbix_server restart |
5.zabbix图形界面添加客户端
在zabbix图形界面上,添加JMX类型的客户端,并了解java模板即可,截图略
三、Tomcat性能优化
1.屏蔽dns查询
1 | vim /app/tomcat/conf/server.xml +70 |
2.jvm调优
Tomcat最吃内存,只要内存足够,这只猫就跑的很快。如果系统资源有限,那就需要进行调优,提高资源使用率。
优化catalina.sh配置文件。
在catalina.sh配置文件中添加以下代码:
1 | JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m" |
堆栈参数:
1 | server:一定要作为第一个参数,在多个CPU时性能佳 |
其他参数
1 | -Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k. |