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

前言

这俩天一直再调些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,然后就可以监控了
在这里插入图片描述

jvisualvm加密的连接方式

上面讲的是没用用户名密码验证的方式,下面来讲加入用户名密码的
-Dcom.sun.management.jmxremote.authenticate=false
把他从false改为true
-Dcom.sun.management.jmxremote.authenticate=true
再加入用户名密码的文件
-Dcom.sun.management.jmxremote.acccess.file=jmxremote.access
-Dcom.sun.management.jmxremote.password.file=jmxremote.password"

jmxremote.access文件内容

monitorRole用户名 在这里插入图片描述

pwd1是密码在这里插入图片描述
然后再看dockerFile
在这里插入图片描述
把用户名和密码文件配置,同时再拷贝到容器里

这个是我文件放的位置

在这里插入图片描述
配置完成启动,看看效果
在这里插入图片描述

阿里巴巴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 最常用,本篇的工具其实就是集成了这些命令。

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值