JConsole或者JvisualVM远程连接jetty进行jvm监控

最近项目发现了服务有内存泄漏的问题,但是在jvm上并没有配置即jvm没有配置

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof 这两个参数,导致在发生了oom后只能看到日志中有OOM异常,其他的并不能分析出来,等监控到的时候发现进程已经成了僵尸进程,根本没法通过jmap导出dump。

为了模拟和分析问题在dev环境将-Xmx -XX:MaxMetaspaceSize(我是jdk1.8)都进行了缩小为了重现问题,接下来想监控oom的过程,于是就想用jvisual vm连接到jetty服务器上去进行jvm的监控。

  • 服务端的配置

经过查看jetty的官方文档, jetty-jmx文档  远程链接需要设置几个参数,在此列一下:

由于我使用的外置的jetty,所以在start.ini中加入如下配置:

#
# Initialize module jmx-remote
#
--module=jmx
--module=jmx-remote
## JMX Configuration
## Enable for an open port accessible by remote machines
jetty.jmxrmihost=192.168.1.2
jetty.jmxrmiport=1099

主要作用就是启用jmx和jmx-remote两个module,然后通过`jetty.jmxrmihost`和`jetty.jmxrmiport`设置服务器的ip抵制和要远程链接端口,需要注意的是这里的端口一定是开了防火墙的,否则访问不到,这种方法是没有使用认证的方式(在测试环境内网无所谓,但是在外网的话建议时候带认证方式的连接方法),也可以参考官网使用认证的方式进行连接。保存配置重启jetty服务

  • jconsole或者jvisual vm客户端的配置

可以先通过telnet进行测试连通性,如果没问题的话可以先打开jconsole(jdk的安装目录/bin/jconsole.exe)或者jvisualvm(jdk的安装目录/bin/jvisualvm.exe)

 jvisualvm也是一样的道理,点击远程,添加jmx连接即可,此时jvm的情况就一目了然了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值