如何监控线上服务器的JVM(Docker容器)
JVisualVM 远程链接 Docker 中的 JVM
前言
这俩天一直再调些JVM参数,用了2款工具今天介绍下,本文介绍的均是在docker容器里进行。
传统的jvisualvm监控
编写dockerFile,运行项目
如图有个jvm模拟full GC的demo,这是我用来解决jvm内存问题的一个demo项目。现在我监控下
打包成jar文件,注意此项目端口号是11896,此处在后面我踩了半天坑。
再看下dockerFile
解释下参数,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
dockerfie编写完成,生成镜像
docker build -t myjvmtest .
运行容器
docker run -d -p 8890:8890 -p 11890:11890 --name jvmtest1 myjvmtest
注:8090是jmx端口号,11890是项目端口号,做好映射。启动成功
打开jvisualvm,远程连接
之后输入jmx的端口号,就是上一步设置的8890,然后就可以监控了
阿里巴巴Arthas详解
Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,
可以方便的定位和诊断 线上程序运行问题。
Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas
下载好Arthas jar包
启动自己的java项目
输入进程序号7,
输入dashboard可以查看整个进程的运行情况,线程、内存、GC、运行环境信息:
这样就可以进行java环境的监控
小结
本篇主要介绍了线上环境JVM环境的监控,可以有效的找到频繁GC的原因,OOM异常的原因
当然了JVM调优查看的基本命令还是很基础的,也要掌握,像重要的:jps,jmap,jstack,jinfo
jstat -gc pid 最常用,本篇的工具其实就是集成了这些命令。
上一篇: php函数间的参数传递(值传递/引用传递)_php技巧
下一篇: PHP通过服务器运行的网页字体变大