服務器 CPU 長期跑滿 (Load Average > 核心數 * 2) 會導致響應超時、健康檢查失敗、甚至觸發熔斷雪崩。本文提供標準化排查流程,覆蓋應用層 (代碼、配置)、系統層 (進程、線程、中斷)、網絡層 (流量異常)、安全層 (攻擊、木馬) 四大維度,並附帶實戰常用命令速查表。
maxThreads、PHP-FPM pm.max_children、Go GOMAXPROCS 設置過大,超過 CPU 核心數導致上下文切換開銷激增。while(true){}、Pattern.matches("^(a+)+$", "aaaaaaaaaaaaaaaaaaaaac") (灾難性回溯)。jstack/gdb 分析熱點線程堆疊,定位業務代碼行號。jstat -gcutil 觀察 GC 頻率,調整堆大小、新生代比例、升級閾值。worker_processes auto 在高核機器 (64C+) 可能啟動過多進程,上下文切換開銷大。# 1. 定位高 CPU 進程
top -c # 按 P 排序, 記錄 PID
htop # 更直觀, 顯示線程
# 2. 分析進程線程
ps -mp PID -o THREAD,tid,time,comm | sort -k3 -r | head -20
# 找到佔用 CPU 最高的線程 TID (十進制)
printf "%x\n" TID # 轉十六進制
# 3. 關聯代碼堆疊 (Java 示例)
jstack PID | grep -A 20 'tid_hex'
# 非 Java: gdb -p PID -ex "thread apply all bt" -batch
| 現象 | 排查命令 | 特徵 |
|---|---|---|
| CC 攻擊 (高並發請求) | netstat -an | grep :80 | wc -lawk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20 | 單 IP 請求量極大、URL 集中在動態頁、User-Agent 固定/為空 |
| 搜索引擎爬蟲瘋狂抓取 | grep -i "bot\|spider\|crawler" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | User-Agent 包含 bingbot, Googlebot, AhrefsBot 等, 訪問頻率極高 |
| 盜鏈/熱鏈大量消耗 | awk '$7 ~ /\.(jpg|png|gif|mp4)/ {print $11}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | Referer 非本站域名, 靜態資源請求量異常 |
| 挖礦木馬 / 反彈 Shell | top -c 觀察陌生進程名 (xmrig, kdevtmpfsi, kinsing)crontab -l cat /etc/cron.* 檢查定時任務ls -la /tmp /var/tmp /dev/shm 檢查可疑文件 | 進程名隨機、佔用 CPU 100% 長時間、網絡連接異常 |
cat /proc/cpuinfo | grep MHz 觀察主頻是否遠低於標稱;sensors 或 IPMI 查看溫度。top 觀察 st (steal time) 列,> 10% 表明宿主機超售嚴重,需遷移或投訴雲廠商。cat /proc/interrupts 觀察特定中斷號計數器飛速增長,常見於網卡多隊列未開啟 RPS/RFS、磁碟控制器故障。resmon.exe) 或「進程探索者」 (Process Explorer) 定位高 CPU 線程。wmic process get ProcessId,Name,CommandLine 導出進程信息。perfmon.msc) 添加「處理器(_Total)\% 處理器時間」、「系統\處理器隊列長度」計數器。iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 100 -j REJECT)。cp /proc/PID/exe /tmp/suspicious_bin、netstat -antp > /tmp/netstat.log、lsof -p PID > /tmp/lsof.log。CPU 100% 癥狀背後往往隱藏著架構缺陷或安全隱患,建立標準化排查體驗與應急預案,是保障業務連續性的核心能力。
VPS 三大虛擬化技術深度對比:OpenVZ vs Xen vs KVM
Windows Server 2008 IIS 7 運行 PHP 完整配置教學
Nginx 入門教學:Location、Rewrite、Redirect、防盜鏈、快取與存取控制實戰語法
IIS 7.5 應用程式集區:整合模式 vs 經典模式差異與 HttpModule 遷移實戰
IIS 6.0 實現 301 永久重導向至 WWW 域名完整教學
Apache + ProFTPD 虛擬主機安全架構:權限隔離與 WebShell 防禦實戰