標籤:互連網 java linux cpu 100% 資源
一、背景
互連網發展的今天,很多問題都會在生產中遇到,假如某天發現系統資源中cpu佔用100%,一直居高不下,那麼就要進行問題查詢了。
二、解決思路
1、查看那個java進程佔用最多,top命令
[[email protected] test]# top -H
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/8D/88/wKiom1igUPnTuolTAAEeg-_h5wI991.png-wh_500x0-wm_3-wmp_4-s_4244281010.png" title="QQ圖片20170212201121.png" alt="wKiom1igUPnTuolTAAEeg-_h5wI991.png-wh_50" />
2、可以明顯看到PID為29003的java進程佔用cup最高,已佔用了95.5%了,可根據進程號進一步查看該進程的線程情況。顯示該進程中每個線程的CPU資源消耗情況。
[[email protected] test]# top -H -p 29003
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/8D/88/wKiom1igUzrBssXzAAEhWYfxICw505.png-wh_500x0-wm_3-wmp_4-s_4150159320.png" title="QQ圖片11111.png" alt="wKiom1igUzrBssXzAAEhWYfxICw505.png-wh_50" />
3、找到佔用最高的PID29003後,用jstack列印線程棧資訊到stack檔案中,如:
[[email protected] atm]# jstack -l -F 29003 >29003.stack
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/8D/86/wKioL1igVCTRuQrGAABXlzBQjfU983.jpg-wh_500x0-wm_3-wmp_4-s_1083867634.jpg" title="QQ20222222.jpg" alt="wKioL1igVCTRuQrGAABXlzBQjfU983.jpg-wh_50" />
此時,已經將線程棧資訊列印進29003.stack檔案中了,可以利用cat等命令查看該檔案。
4、找到29003的前後20行資訊(20行不夠可以50行或者更多),並展示出來:
[[email protected] test]# cat 29003.stack |grep -A 20 ‘29003‘
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8D/86/wKioL1igVW6TXWR2AAGRE6jRZgU349.jpg-wh_500x0-wm_3-wmp_4-s_3412072441.jpg" title="QQ23333.jpg" alt="wKioL1igVW6TXWR2AAGRE6jRZgU349.jpg-wh_50" />
如所示,可準確定位到具體哪個類中的那個方法導致的該問題的出現,然後根據代碼再一一解決。
本文出自 “垚海” 部落格,請務必保留此出處http://tl2011.blog.51cto.com/6006611/1897118
linux java線程100%的問題定位方法