jvm-gc調優2
阿新 • • 發佈:2022-05-31
系統崩潰了, 所有請求超時
看系統cpu :
top
1
檢視系統cpu使用 。
top -H -p pid # 檢視java檢查中執行緒使用情況 。 如:top -H -p 13310
發現很多執行緒cpu使用率為100%。
出現的第一列pid 是執行緒id 如 13333,將其轉16進位制 : 3415
檢視程序13310中的執行緒號為3415的執行緒
./jstack 13310 |grep -A 50 3415 # nid 就是執行緒id 。
"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007f26f8067800 nid=0x3415 runnable
檢查所有執行緒
./jstack 13310 >> 123.txt
jstat -gcutil 13310 # 檢視gc總共消耗時間
jstat -heap 13310 # 版本不一致還是啥問題, 檢視不了
生成dump
./jmap -dump:file=ipt.dump 13310
由於服務dump 已經到了8g,不好檢視處理
修改專案啟動指令碼:
java -Xms128m -Xmx1024m -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./logs/gclogs -jar ***.jar --server.port=8082 > /dev/null 2>&1 &
由於減少了記憶體, 上面的系統崩潰不一定會出現, 但是假死應該還會出現, 等待分析Gc 輸出。