我們?nèi)绾卧\斷一個耗資源的神秘進程?
作者:李華
查看系統(tǒng)總體狀態(tài)top 或 htop:實時查看 CPU、內(nèi)存使用情況。iotop:查看 IO 使用情況(需要 root 權限)。vmstat:檢查 CPU、內(nèi)存、磁盤 IO 等性能指標。
如何診斷占用過多 CPU、內(nèi)存和 IO 等資源的神秘進程?
下圖說明了 Linux 系統(tǒng)中的有用工具。
圖片
01 初步排查
1. 查看系統(tǒng)總體狀態(tài)
- top 或 htop:實時查看 CPU、內(nèi)存使用情況。
- iotop:查看 IO 使用情況(需要 root 權限)。
- vmstat:檢查 CPU、內(nèi)存、磁盤 IO 等性能指標。
2. 找出占用資源的主要進程
- 使用 ps 查找占用最多資源的進程:
ps aux --sort=-%cpu | head -n 10 # 按 CPU 使用排序
ps aux --sort=-%mem | head -n 10 # 按內(nèi)存使用排序- 使用 pidstat 查看進程的 CPU、內(nèi)存和 IO 使用:
pidstat -p ALL 1- 使用 lsof 查看特定進程打開的文件描述符
lsof -p <PID>02 具體分析問題進程
確定高資源使用進程后,進一步診斷其行為。
1. 檢查進程是否存在高 CPU 占用
- 使用 perf top 或 perf record(Linux)分析 CPU 熱點。
- 使用 strace 查看進程的系統(tǒng)調(diào)用:
strace -cp <PID>- 檢查是否存在線程死循環(huán):
top -H -p <PID>- 查看堆棧信息:
gstack <PID> # Linux2. 檢查內(nèi)存泄漏或異常
- 使用 pmap 查看進程內(nèi)存分布:
pmap -x <PID>- 使用 smem 分析進程的內(nèi)存使用:
smem -P <ProcessName>- 檢查內(nèi)存增長趨勢:
watch -n 1 cat /proc/<PID>/status3. 分析 IO 使用
- 使用 iotop 或 iostat 查看磁盤 IO:
iotop -o # 查看 IO 活躍的進程
iostat -x 1 # 查看詳細的磁盤 IO 性能- 使用 strace 查看進程是否頻繁調(diào)用 IO 系統(tǒng)調(diào)用:
strace -p <PID> -e trace=open,read,write,fsync4. 網(wǎng)絡活動分析
- 使用 netstat 或 ss 查看網(wǎng)絡連接:
netstat -plant | grep <PID>- 使用 tcpdump 捕獲網(wǎng)絡流量:
tcpdump -i eth0 port <PORT>- 使用 iftop 實時監(jiān)控網(wǎng)絡帶寬占用
責任編輯:武曉燕
來源:
ByteByteGo





























