Linux在线监控Java JDK JVM运行情况,便于解决内存以及线程等问题
上周,写了一篇关于JVM的Perm generation溢出和tomcat宕机的问题,其中用到了监控工具,jvisualvm,从本地连接远程机器,在连接过程中,首先在tomcat服务上进行配置和指定端口,然后从本地访问也需要用指定端口进行connect,并且jvisualvm还有其他的端口,具体是多少,没测过,对于有些公司防火墙策略和应用端口的保护的情况下,开几个指定的端口是可行的,而对于不确定端口,最直接的一个策略是服务器端口全开,而全开则会有被攻击的风险,全开的操作,在成规模的公司,很少能够配合,因此本地使用jvisualvm连接远程往往会有限制,为解决燃眉之急,可以使用Linux服务器上的监控方式进行,一共有两个常用的:
- jmap
- jconsole
网上很多的资源了,也有官方的介绍,这里就不多说了,简单介绍:
jmap通过命令形式进行查看JVM运行情况,用法简单,如在终端中输入jmap -heap 1528 就可以看到1528进程的内存使用情况,如下截图:
可以清楚的看到所有的内存信息,如分配的总量、使用情况和剩余
当然还有其他的指令如-histo、-permstat等,具体问问度娘吧
jconsole是一个swing开发的图形化界面,没有jvisualvm功能强大,但是对于基本的监控足够,如是否有死锁、内存和CPU使用情况等,直接在终端中输入jconsole命令即可,也可以指定进程号进行直接连接jconsole 1528。官方的文档说明连接https://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html
根据各项动态指标,进行分析问题或查看运行情况,工具都是活学活用。。。