介绍目前用于苍穹性能问题的分析思路,包括monitor工具、MAT宕机日志收集分析、Arthas工具分析CPU消耗高问题、JDK线程堆栈收集分析。(不包含操作系统、数据库与中间件等部分)
Monitor工具
Monitor是苍穹的微服务集群监控管理平台,是苍穹分析和排查线上问题必不可少工具。
如需了解具体使用方法可参考 #PaaS平台那些事# 公众号文章,这里不做详细介绍。
https://mp.weixin.qq.com/s?__biz=Mzg5NDU2MTIxMQ==&mid=2247485283&idx=1&sn=ab5edfce3f16c97764544365eb161abe&chksm=c01cf9b7f76b70a19c40f750a551498063d6d62a40ba53f0666a7d84ba0c1ec4bafa6c659811&scene=21#wechat_redirect
2. 整体性能问题、宕机问题分析(dump日志收集分析)
当发生整体缓慢甚至系统不可用时,强烈建议在重启服务前手动生成dump日志到NFS挂载目录或其他服务器本地目录,以便事后使用MAT工具分析。
(1) 容器环境收集方法(存放路径要放到服务器上,1为容器内固定Java PID进程):
/jdk/bin/jmap -dump:format=b,file=/mservice/logs/dump.bin 1
(2) 非容器环境收集方法(存放路径可自定义):
/kingdee/jdk/jdk1.8.0_161/bin/jmap -dump,format=b,file=/dump.bin <pid>
MAT工具下载地址:https://www.eclipse.org/mat/downloads.php
建议进行分析的电脑内存要有8G以上剩余内存,以免无法打开宕机日志,所以一般是在固定服务器或电脑进行分析。
也可参考公众号文章详细了解:苍穹性能分析之JVM性能分析内存篇
https://mp.weixin.qq.com/s/6ggqAqStSbtkL6rzkcHXpg
示例:
图中Java进程的5.6G内存被1个线程消耗掉
通过如下线程堆栈可确认其属于二开功能导致的OOM内存溢出问题,可联系现场二开跟踪分析。
还可通过traceId在monitor查其日志进一步定位功能点
3. 使用Arthas工具分析CPU消耗高问题
参考链接:https://vip.kingdee.com/article/180683020100514560
近期我们将更新mservice苍穹镜像,里面会自带此工具,无需再手工安装。非容器环境仍需要手工安装运行。
4. 使用JDK工具手工收集分析线程堆栈
参考链接 https://vip.kingdee.com/article/202460967370584064
可结合monitor工具查询当前容器服务的living thread活动线程,多次刷新定位异常堆栈
推荐阅读