RocketMQ:底层Netty频繁OS OOM
JVM使用jemalloc分配native内存,排查发现无明显泄漏。通过pmap、gdb分析及Arthas查看Netty堆外内存占用,定位到RocketMQ客户端因Netty直接内存分配导致内存超1G。调整MaxDirectMemorySize引发消息积压,最终确认问题源于Netty内存管理机制。短期方案为压缩Java堆,腾出堆外空间保障MQ可用性。
Arthas watch 命令使用指南
Arthas 是我很喜欢的一款 Java 领域的开发调试工具。每次测试遇到问题的时候,当别人为了加一条日志而重发代码,我都会欣慰地拿出我的 Arthas 并且告诉他们:少年,你不用再为了加日志就重发代码而烦恼了。Arthas,你值得拥有。
用 Arthas 神器来诊断 HBase 异常进程
HBase 集群的某一个 RegionServer 的 CPU 使用率突然飙升到百分之百,单独重启该 RegionServer 之后,CPU 的负载依旧会逐渐攀上顶峰。多次重启集群之后,CPU 满载的现象依然会复现,且会持续居高不下,慢慢地该 RegionServer 就会宕掉,慢慢地 HBase 集群就完犊子了。
Java线上问题排查神器Arthas实战分析
Java线上问题排查神器Arthas实战分析
是不是在实际开发工作当中经常碰到自己写的代码在开发、测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂;而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办。原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat、jmap、jstack、 jconsole、visualvm、Java Mission Control、MAT等。
配置 arthas 实现远程线上 debug
arthas 有多种启动方式:
java agent 像 skywalking 一样
as.sh 利用 arthas 的 shell 启动 或者 java -jar 启动
sprintboot starter 集成到应用中启动
我们采用最方便的把 arthas 集成到 springboot-starter 的应用中启动