查看JVM堆棧參數


當項目上線后,作為一個后台開發選手,必備的技能之一就是當服務器出現故障時,查看服務器進程及各種參數,然后排查問題。


第一步,根據應用端口號查看應用進程

ps -ef |grep 111111
1
結果如下:


注意觀察CPU、內存參數,百分比,絕對數值越高說明服務器壓力越大,但並不代表掛了。

當然,如果長時間維持在較高水平,即便沒掛,也說明離掛不遠了。


第二步,查看服務器日志

查看應用服務器日志,觀察是否存在 full gc。

tail -500f xxxxx.log
1
如果出現長時間的full gc,你也要小心了。

這時,需要繼續檢查。


第三步,查看應用進程下cpu或者內存使用率非常高的線程
top -H -p 11111 # 11111是第一步查出來的應用進程
1
結果如下:

 

如果cpu或者mem長時間保持在99%,說明這個線程占用了大量資源。

這時需要把服務器內存堆棧日志下載下來。


第四步 下載堆棧日志

jstack -l 11111 > xxx.stack // 11111是第一查出來的應用進程
1
這個命令可以把堆棧日志下載到xxx.stack的文本文件中。

xxx.stack是一個文本文件,就在當前目錄下,你可以把他下載到電腦硬盤,用文本工具打開。


第五步 查找導致高使用率的原因

通常第三步找到的高使用率的線程就是導致服務器高壓力的原因。

在第四步下載的日志文件中查找改線程的ID,要注意的是,通過名稱看到屏幕的id是十進制的,而下載的文本日志中的ID是十六進制的,需要把十進制轉換成十六進制的數字,才能搜索到。

如果能夠在堆棧日志中搜索到改線程ID,就可以找到導致服務器壓力大的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM