elasticsearch服务器CPU100%分析
1、通过top命令查询占用CPU高的进程ID
然后ps aux | grep [pid]
2、发现线程31342、28478等占用比较多的CPU资源
3、将十进制pid转换为十六进制的pid
printf “0x%x” 28478
4、查询具体的线程信息
jstack -l 28354 | grep 6f3e -A 20
这里我们基本上可以确定,当前系统缓慢的原因主要是垃圾回收过于频繁,导致 GC 停顿时间较长。
5、我们通过如下命令可以查看 GC 的情况
jstat -gcutil 28354 1000 10
28354为进程ID,1000代表每隔1000毫秒检查一次, 10代表检查10次, 10也可以省略, 表示不限次数
可以看到,这里 FGC 指的是 Full GC 数量,这里高达 31115,而且还在不断增长。从而进一步证实了是由于内存溢出导致的系统缓慢。
elasticsearch默认的JVM配置中,Xms、Xmx都为1G,不太够用,我们修改JVM配置,将Xms、Xmx修改为2G
-Xms2g
-Xmx2g