1、执行: jcmd 【PID】 VM.native_memory summary
查看java进程总体内存使用概览信息。
除了堆内存8G外。发现Thread占用了2G。接下来排查线程栈的情况
2、执行jstack -l 【PID】> jstack_PID.log 命令 导出栈信息
使用一个在线栈分析工具:Thread dump analysis processing error
发现2个问题:
1、rabbitmq监听线程过多
2、存在比较多的sql查询超时,取消查询的守护线程
解决方案:
1、默认设置的栈空间为1m。 先砍掉1半。设为512kb
2、导出打印的日志。查看sql超时的业务。进行修改