jconsole/JvisualVM 监视jvm和远程tomcat
2016-03-30 17:58
495 查看
以前做程序很少对程序的运行状态做监控,今天决定对现在做的这个程序进行一下监控
监视jvm状态的工具首选当然是jconsole或者JvisualVM,这两个东西都是jdk自带的,JVisualVM是自jdk1.6以后就有了,功能比jconsole强大
所以我就选择了JvisualVM
JvisualVM可以在JAVA_HOME/bin/这个目录下找到
使用JvisualVM的过程并不顺利。
第一个出现的问题是 "无法检测到本地java应用程序"。
网上找到不少解决方案,其中一个方案是在启动java程序的时候添加一个参数即可:
参考:http://my.oschina.net/building/blog/74626;
这种方案对于用tomcat的同学来说不是很方便,而且这也不是最佳的解决办法
然后就找到了这个:http://blog.csdn.net/uusad/article/details/7979670,
说出现这个问题的原因是windows用户名出现了大写的字母,需要删除临时目录,让JvisualVM重新建临时目录
这里面有详细说明。
然后是配置问题,也是找了好多资料都没有看的很明白。
这个是说的比较好懂的:http://www.ahlinux.com/tomcat/22979.html
主要是在tomcat/bin/catalina.bat(windows)或者tomcat/bin/catalina.sh(linux)里面加上一段jmx的配置
windows需要加:
linux需要加
需要注意的是JAVA_OPTS这个参数需要注意,这个参数也是配置tomcat分配jvm内存配置参数,如:
这段配置的意思是tomcat启动是就分配java初始化堆栈大小(-Xms)为1024m,最大堆栈大小(-Xmx)4056m ,线程堆栈大小(-Xss)1024K,永久带初始化(-XX:PermSize)256m,永久带最大值(-XX:MaxPermSize)512m。说以在配这一段的时候直接加在这个后面就好了
如果是监控本地程序还需要到jdk目录的jre的manager下面修改一个文件.比如:
进入JDK安装目录,C:\Program Files\Java\jdk1.6.0_25\jre\lib\management,把jmxremote.password.template重命名,去掉后缀,改为jmxremote.password。
具体操作可以看上面给出的链接。
如果是监控远程的tomcat就直接是先添加远程主机,然后在远程主机上添加jmx链接,填上刚才配置的端口就好了
如果远程监控需要密码控制的话-Dcom.sun.management.jmxremote.authenticate=false这个参数就需要改成true。
用户名密码可以指定文件-Dcom.sun.management.jmxremote.pwd.file=$JAVA_HOME/jre/lib/management/jmxremote.password
用户和权限是存在$JAVA_HOME/jre/lib/management/jmxremote.access中
文件里面都有详细的注释,这里就不详细介绍了。
附:
JAVA_OPTS和CATALINA_OPTS的区别,
上面我们用的配置全都是用JAVA_OPTS配置的,其实CATALINA_OPTS也可以完成该配置。它们之间的区别:
CATALINA_OPTS:只被当前tomcat以start,run或者debug命令执行时使用的jvm配置,比如heap size, GC logging, JMX ports etc.
JAVA_OPTS:任何命令执行时的java runtime jvm配置。能被tomcat和停止线程使用,大部分配置应该被配置 CATALINA_OPTS.
可以参考:http://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference
监视jvm状态的工具首选当然是jconsole或者JvisualVM,这两个东西都是jdk自带的,JVisualVM是自jdk1.6以后就有了,功能比jconsole强大
所以我就选择了JvisualVM
JvisualVM可以在JAVA_HOME/bin/这个目录下找到
使用JvisualVM的过程并不顺利。
第一个出现的问题是 "无法检测到本地java应用程序"。
网上找到不少解决方案,其中一个方案是在启动java程序的时候添加一个参数即可:
-XX:+PerfBypassFileSystemCheck
参考:http://my.oschina.net/building/blog/74626;
这种方案对于用tomcat的同学来说不是很方便,而且这也不是最佳的解决办法
然后就找到了这个:http://blog.csdn.net/uusad/article/details/7979670,
说出现这个问题的原因是windows用户名出现了大写的字母,需要删除临时目录,让JvisualVM重新建临时目录
这里面有详细说明。
然后是配置问题,也是找了好多资料都没有看的很明白。
这个是说的比较好懂的:http://www.ahlinux.com/tomcat/22979.html
主要是在tomcat/bin/catalina.bat(windows)或者tomcat/bin/catalina.sh(linux)里面加上一段jmx的配置
windows需要加:
set JAVA_OPTS= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
linux需要加
JAVA_OPTS=' -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'
需要注意的是JAVA_OPTS这个参数需要注意,这个参数也是配置tomcat分配jvm内存配置参数,如:
JAVA_OPTS="-Xms1024m -Xmx4056m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m"
这段配置的意思是tomcat启动是就分配java初始化堆栈大小(-Xms)为1024m,最大堆栈大小(-Xmx)4056m ,线程堆栈大小(-Xss)1024K,永久带初始化(-XX:PermSize)256m,永久带最大值(-XX:MaxPermSize)512m。说以在配这一段的时候直接加在这个后面就好了
JAVA_OPTS="-Xms1024m -Xmx4056m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
如果是监控本地程序还需要到jdk目录的jre的manager下面修改一个文件.比如:
进入JDK安装目录,C:\Program Files\Java\jdk1.6.0_25\jre\lib\management,把jmxremote.password.template重命名,去掉后缀,改为jmxremote.password。
具体操作可以看上面给出的链接。
如果是监控远程的tomcat就直接是先添加远程主机,然后在远程主机上添加jmx链接,填上刚才配置的端口就好了
如果远程监控需要密码控制的话-Dcom.sun.management.jmxremote.authenticate=false这个参数就需要改成true。
用户名密码可以指定文件-Dcom.sun.management.jmxremote.pwd.file=$JAVA_HOME/jre/lib/management/jmxremote.password
用户和权限是存在$JAVA_HOME/jre/lib/management/jmxremote.access中
文件里面都有详细的注释,这里就不详细介绍了。
附:
JAVA_OPTS和CATALINA_OPTS的区别,
上面我们用的配置全都是用JAVA_OPTS配置的,其实CATALINA_OPTS也可以完成该配置。它们之间的区别:
CATALINA_OPTS:只被当前tomcat以start,run或者debug命令执行时使用的jvm配置,比如heap size, GC logging, JMX ports etc.
JAVA_OPTS:任何命令执行时的java runtime jvm配置。能被tomcat和停止线程使用,大部分配置应该被配置 CATALINA_OPTS.
可以参考:http://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference
相关文章推荐
- Tomcat7.0源码分析——类加载体系
- 修改tomcat默认的编码方式
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- android 远程访问tomcat工程中的xml
- zabbix 监控 Tomcat
- solrCloud+tomcat+zookeeper集群配置
- Linux下安装Tomcat
- linux下的nginx+tomcat负载均衡
- centOs安装配置jdk+mysql+tomcat
- webstorm 将项目部署到Tomcat目录
- Tomcat7 管理员配置
- myeclipse tomcat 部署项目不能点击finish
- 解决web项目无法部署到eclipse配置的本地tomcat
- Tomcat的类加载体系
- openssl生成csr文件,将crt和key文件转换成tomcat下的jks文件
- log4j在tomcat项目与jboss项目中分类输出文件的总结
- ECLIPSE JSP TOMCAT 环境搭建
- tomcat部署时war和war exploded区别
- TOMCAT免安装版 启动配置
- 一个实例演示jersey框架实现RESTful风格的Webservice,并发布到Tomcat,以及客户端调用示范