欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何监控线上服务器的JVM(Docker容器)

程序员文章站 2022-06-03 14:20:02
...

前言

这俩天一直再调些JVM参数,用了2款工具今天介绍下,本文介绍的均是在docker容器里进行。

传统的jvisualvm监控

编写dockerFile,运行项目

如图有个jvm模拟full GC的demo,这是我用来解决jvm内存问题的一个demo项目。现在我监控下
如何监控线上服务器的JVM(Docker容器)
打包成jar文件,注意此项目端口号是11896,此处在后面我踩了半天坑。

 再看下dockerFile

如何监控线上服务器的JVM(Docker容器)
解释下参数,JVM的就不说什么了,基本都懂。
-Dcom.sun.management.jmxremote \ 开启jmx远程连接
-Dcom.sun.management.jmxremote.rmi.port=8890 \映射 宿主机端口,一定要注意这个是jmx的端口
-Dcom.sun.management.jmxremote.port=8890 \ docker 容器端口
-Dcom.sun.management.jmxremote.ssl=false \ 是否采用ssl协议
-Dcom.sun.management.jmxremote.authenticate=false \ 是否通过账户密码

 我这是自己的服务器测试用的,各位线上环境设置true

-Djava.rmi.server.hostname= 你的服务器ip
如何监控线上服务器的JVM(Docker容器)

  dockerfie编写完成,生成镜像
docker build -t myjvmtest .
 运行容器
docker run -d -p 8890:8890 -p 11890:11890 --name jvmtest1 myjvmtest

注:8090是jmx端口号,11890是项目端口号,做好映射。启动成功

如何监控线上服务器的JVM(Docker容器)

打开jvisualvm,远程连接

如何监控线上服务器的JVM(Docker容器)
之后输入jmx的端口号,就是上一步设置的8890,然后就可以监控了
如何监控线上服务器的JVM(Docker容器)

阿里巴巴Arthas详解

Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,
可以方便的定位和诊断 线上程序运行问题。
Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas

下载好Arthas jar包
启动自己的java项目
如何监控线上服务器的JVM(Docker容器)

如何监控线上服务器的JVM(Docker容器)
输入进程序号7,如何监控线上服务器的JVM(Docker容器)
输入dashboard可以查看整个进程的运行情况,线程、内存、GC、运行环境信息:
如何监控线上服务器的JVM(Docker容器)
这样就可以进行java环境的监控

小结

本篇主要介绍了线上环境JVM环境的监控,可以有效的找到频繁GC的原因,OOM异常的原因

当然了JVM调优查看的基本命令还是很基础的,也要掌握,像重要的:jps,jmap,jstack,jinfo
jstat -gc pid 最常用,本篇的工具其实就是集成了这些命令。

如何监控线上服务器的JVM(Docker容器)

相关标签: docker java jvm