公司正好做了个一个java项目,使用h2 kv数据库,因为会查询到1天、7天、30天等数据,1、7天的接口数据正常,但是调用30天的时候,CPU满载,线程都BLOCK,Jstack看到的都是cache载入有问题,这时候就想用VM去监控java的进程,查看各线程和类的工作状态
其实只要在catalina.sh中,加入:
- CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.8.7
- -Dcom.sun.management.jmxremote.port=8088
- -Dcom.sun.management.jmxremote.ssl=false
- -Dcom.sun.management.jmxremote.authenticate=false"
注意这里是用CATALINA_OPTS,而不是网上说的JAVA_OPTS,并且需要注意tomcat的启动用户,装tomcat的时候默认用户是work,而之前一直用root去配置jmx,导致百试无果,后来su - work,配置下,OK