elasticsearch伺服器CPU100%分析
1、通過top指令查詢占用CPU高的程序ID
然後ps aux | grep [pid]
2、發現線程31342、28478等占用比較多的CPU資源
3、将十進制pid轉換為十六進制的pid
printf “0x%x” 28478
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQDOxEzX3xCZlhXam9VbsUmepNXZy9CXwJWZ3xCdh1mcvZ2Lc1zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5YzNxMGOkNWOjVTMyAjMzYzX2ETMyQTMzEzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
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