線上系統出現問題時,需要記載系統當前健全狀態,總結一下,大概需要關注以下幾個方面:
1.負載:——top命令
在linux上,執行top 等命令,關注load, Memory, CPU 等系統概況,以及關注CPU和memory 佔用較多的進程。
使用top -H, 並按 shift+p 對CPU進行排序,找到當前佔用CPU最多的線程。(top -u bpm -H),-H 按線程顯示,否則按進程顯示
使用 ps -T <pid> |wc -l 找到當前啟動並執行java 進程的線程數。
2.Thread dump——jstack
kill -3 <pid>
jstack <pid> 截獲當前java 進程的線程堆棧。
(java thread dump相關文章)
3. Memory——jmap
jmap -heap <pid> 可以得到當前堆記憶體情況。
如果懷疑有記憶體問題,還可以dump 堆對象。
Java5:jmap -heap:format=b <pid>
Java6: jmap -dump:format=b,file=heap.bin <pid>
注意:這個操作對機器有很大的效能影響。在java 6中,這個也可以通過java 啟動參數中加入-XX:HeapDumpPath=/home/nasdaq/oom.hrof -XX:+HeapDumpOnOutOfMemoryError 實現OOM時自動memory dump
4.GC——jstat
jstat -gcutil <pid> 得到當前應用的gc 情況。
5.網路連接情況
得到與網路各機器的串連數
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r
以上命令執行結果是:
串連數量 串連ip
也可以通過netstat 具體關注某個連接埠的串連數。
6.日誌
備份當前應用日誌。
7.工具:
Heap Dump分析工具:Memory Analyzer (MAT):http://www.eclipse.org/mat/(使用Memory Analyzer Tool(MAT)Eclipse外掛程式分析記憶體泄露)Thread Dump分析工具:Lockness:http://lockness.plugin.free.fr/home.php