从 GC、线程 角度分析中间件性能
线上经常需要对中间件的性能进行巡检,除了中间件本身的自带监控以外。很多的 java 中间件没有提供监控,或者生产环境不允许操作(比如 TOMCAT)
针对中间件本身可以从 GC、线程的角度分析出 java 虚拟机的运行情况
巡检指标:GC 日志、线程 dump
巡检工具:Gceasy、FastThread、PMTI、jstack、jstat、jmap 等
巡检命令:
GC 运行情况:jstat -gcutil pid 1000 20 (线上 jstat 需要中间件运行的 jdk,还有一些情况可能会有报错,按照提示加上-d64 、-F 即可)
堆内存配置情况:jmap-heap pid 查看堆内存配置情况
内存 dump:jmap -dump:format=b,file=test.log pid
文件比较大,用 IBM MemoryAnalyzer 工具分析即可,建议 8G 内存以上的机器配置
线程运行情况:jstack-pid 输出到文本,用线程分析工具分析线程即可
占用 cpu 较高的线程 dump 分析:
ps -mp pid -o THREAD,tid,time
printf "%x\n" tid
jstack pid | grep tid -A 30
专业分析 GC 日志、线程 dump 网站:
GC 日志 : http://gceasy.io/ (上传 GC 日志即可分析)
线程 dump: http://fastthread.io/(上传线程 dump 文件即可分析)
专业分析工具:
内存 dump 分析:IBM MemoryAnalyzer (MemoryAnalyzer-1.6.1.20161125-win32.win32.x86_64.zip)
线程分析:IBM jca 分析工具 (jca433.jar)
GC 日志:IBM PMTI 工具 (ga456.jar)
附 jinfo 可以在线开启 jvm 参数,开启 GC 日志等参数,可以了解学习下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论