搜索占用cpu最高的线程
1 2 3
| tid=`top -Hp 2725`
top -Hp 17077
|
17120
查看堆栈
1 2 3
| sudo -u elk-user /usr/local/java/jdk1.8.0_131/bin/jstack 2725 > /tmp/es_stack.log
jstack 23265 > /tmp/es_stack.log
|
拿到占用cpu最高的线程栈
1 2
| printf "%x \n" ${tid} printf "%x \n" 23307
|
得到 42e0, 然后打开/tmp/es_stack.log 搜索
1 2 3 4 5 6 7 8 9 10
| "VM Thread" os_prio=0 tid=0x00007f745c0c8800 nid=0xad2 runnable
"Gang worker#0 (Parallel GC Threads)" os_prio=0 tid=0x00007f745c01b000 nid=0xacf runnable
"Gang worker#1 (Parallel GC Threads)" os_prio=0 tid=0x00007f745c01d000 nid=0xad0 runnable
"Concurrent Mark-Sweep GC Thread" os_prio=0 tid=0x00007f745c04a800 nid=0xad1 runnable
"VM Periodic Task Thread" os_prio=0 tid=0x00007f745c12e000 nid=0xada waiting on condition
|
大量GC, 看下堆内存发现太小了。 改成1G就好了
jvm.options
参考
找到Linux虚机Load高的”元凶”