记一次mycat服务异常排查
现象
Mycat服务器CPU使用率居高不下,内存占用突然升高,最终导致mycat挂掉。
排查过程
1、找出CPU占用过高的Java进程号(pid)
通过top命令查看
2、查出指定进程下耗CPU的线程(tid)
ps -mp 进程号 -o THREAD,tid,time
3、将tid转化成16进制值
printf %x tid
4、查看最消耗cpu的线程名及方法
直接查看:jstack pid |grep -10 tid (16进制)
导出进行分析:jstack 进程号 > jstack.txt
5、dump出堆栈信息
jmap -dump:format=b,file=jmapdump.txt 进程号
6、分析堆栈信息,找出问题所在
通过mat打开jmapdump.txt,根据线程名及方法定位
至此,定位到是在执行一个mysql统计语句。该表有10个分表,且数据量较大,mycat在分表整合时导致CPU和内存占用升高。