診斷進程故障是一個系統化的過程,涉及多個方面的檢查和驗證。以下是一些關鍵步驟和方法:
查看系統總體狀態:
top
或 htop
命令實時查看 CPU、內存使用情況。iotop
查看 IO 使用情況(需要 root 權限)。vmstat
檢查 CPU、內存、磁盤 IO 等性能指標。找出占用資源的主要進程:
ps aux --sort=-%cpu
按 CPU 使用排序查看占用最多資源的進程。ps aux --sort=-%mem
按內存使用排序查看占用最多資源的進程。pidstat
查看進程的 CPU、內存和 IO 使用情況。檢查進程是否存在高 CPU 占用:
perf top
或 perf record
分析 CPU 熱點。strace
查看進程的系統調用。top -H -p <PID>
查看堆棧信息。檢查內存泄漏或異常:
pmap
查看進程內存分布。smem
分析進程的內存使用。watch -n 1 cat /proc/<PID>/status
檢查內存增長趨勢。分析 IO 使用:
iotop -o
查看 IO 活躍的進程。iostat -x 1
查看詳細的磁盤 IO 性能。strace -p <PID> -e trace=open,read,write,fsync
查看進程是否頻繁調用 IO 系統調用。網絡活動分析:
netstat
或 ss
查看網絡連接。tcpdump
捕獲網絡流量。iftop
實時監控網絡帶寬占用。查看應用程序日志:檢查應用程序的日志文件,這些文件通常記錄了詳細的錯誤信息和堆棧跟蹤,有助于快速定位問題根源。
系統日志分析:查看 /var/log/syslog
或者 /var/log/messages
,分析有沒有突發事件的記錄。
JVM 致命錯誤日志:查找以 “hs_err_pid” 開頭的日志文件,這些文件記錄了 JVM 崩潰時的詳細信息。
free
命令查看內存使用情況,檢查是否有內存泄漏。top
、vmstat
、df -h
等命令檢查 CPU 和磁盤的使用情況。ps
命令查看進程狀態,如運行狀態(R)、睡眠狀態(S)、僵尸狀態(Z)等,判斷進程是否正常。通過上述步驟,可以系統地診斷和解決進程故障。每個步驟都提供了具體的方法和命令,幫助快速定位問題所在。