JAVA CPU高问题定位
1、TOP找出最大CPU占用的进程pid 如 31226
2、top -p 31226
3、输入H,查看线程信息,此时第一列的pid其实是线程id
3.1、或者使用ps -mp pid -o THREAD,tid,time 查看最占用cpu的线程号
4、线程id转换为16进制:printf "%x\n" 52398
5、查看线程堆栈jstack 31226 |grep ccae -A 60
top H查看线程的过程中,发现最高CPU的线程号频繁更换,怀疑是GC占用CPU高,看准时机打印线程堆栈,果然是GC线程
内存dump分析
1、jmap -F -dump:format=b,file=31226dump.bin 31226
2、使用MAT分析
3、发现内存问题,登陆功能有问题,并发测试登陆时,所有用户没有清除机制,大量连接相关的实例和内存占用