Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 伺服器死機卡頓全方位排查指南

編輯:Linux 教學

現象定義

「死機」指系統完全無響應(無法 SSH、Ping 不通、主控台無反應);「卡頓」指響應極慢、命令執行延遲高、負載飆升但尚可連線。兩者本質皆為資源耗盡或核心異常導致調度失效。

八大排查維度

1. 記憶體耗盡與洩漏

# 即時觀察
free -h
watch -n 1 'free -h && echo "---" && ps aux --sort=-%mem | head -20'

# 關鍵指標
# Mem Available < 10% 總量 → 高風險
# Swap 使用量持續增長 → 記憶體壓力大
# 單一進程 RSS 持續增長 → 疑似記憶體洩漏
  • 重點檢查:Java Heap 設定、資料庫緩衝池、PHP-FPM 進程數、Nginx worker 記憶體
  • 對策:設定合理 ulimit -v、啟用 OOM Killer 白名單、定期重啟長運行服務

2. 定時任務衝突


# 檢查系統級定時任務
cat /etc/crontab
ls -la /etc/cron.*/
cat /var/spool/cron/root  # root 使用者任務

# 檢查使用者級任務
crontab -l -u www
crontab -l -u mysql
  • 常見問題:備份腳本、日誌切割、資料庫維護在同一時間點(如 03:00)集中執行
  • 對策:錯開執行時間、加入隨機延遲 sleep $((RANDOM % 300))、使用 flock 防止並發

3. Web 服務參數超限

服務關鍵參數風險閾值調整建議
Nginxworker_connections> 1024 * worker_processes依 CPU 核心數與記憶體設定
ApacheMaxRequestWorkers> 可用記憶體 / 單進程記憶體Prefork 模式需謹慎計算
PHP-FPMpm.max_children> 總記憶體 / 平均進程記憶體啟用動態模式 pm = dynamic
TomcatmaxThreads> 200 (預設)配合 AcceptCount、連接池大小
MySQLmax_connections> 151 (預設)監控 Threads_connected 峰值

4. 進程數異常與殭屍進程


# 總進程數
ps -eLf | wc -l
# 或
cat /proc/loadavg  # 第 4 欄: running/total threads

# 殭屍進程
ps aux | awk '$8 ~ /^Z/ {print}'
# 或
ps -eo stat,pid,ppid,cmd | grep '^Z'

# 查找父進程
ps -o ppid= -p 
  • 殭屍進程佔用 PID 資源,大量時導致無法建立新進程
  • 根因:父進程未調用 wait()/waitpid() 回收子進程狀態
  • 對策:修正程式碼、重啟父進程、或讓 init (PID 1) 領養回收

5. 系統日誌異常


# 即時追蹤
tail -f /var/log/messages
tail -f /var/log/syslog
journalctl -f  # systemd 系統

# 關鍵字搜尋
grep -i -E "oom|kill|error|fail|segfault|hardware|disk|memory|cpu" /var/log/messages
  • 重點關注:OOM Killer 記錄、硬體錯誤 (MCE)、檔案系統錯誤、核心 panic 訊息

6. 磁碟健康與 I/O 瓶頸


# 檢查壞軌
badblocks -v /dev/sda  # 唯讀檢查,耗時較長
smartctl -a /dev/sda   # S.M.A.R.T. 資訊(推薦)

# I/O 壓力觀察
iostat -x 1 10
iotop -o  # 僅顯示有 I/O 的進程
  • 關鍵指標:%util 接近 100%、await > 100ms、svctm 異常高
  • 對策:RAID 重建、更換故障磁碟、優化 SQL、遷移高 I/O 服務

7. 核心資源消耗


# 查看核心執行緒
ps -eo pid,comm,cmd | grep -E '^\[.*\]$'

# 軟中斷佔用高
cat /proc/softirqs
watch -n 1 'cat /proc/softirqs'

# 網卡多隊列、RPS/RFS 調優
ethtool -L eth0 combined 8

8. 進程異常與安全事件


# 完整進程樹
ps -ef --forest
pstree -p

# 可疑特徵
# 異常使用者執行進程
# 異常網路連線 (netstat -antup / ss -antup)
# 高 CPU 進程名稱隨機、路徑在 /tmp、/dev/shm
# 近期修改的二進制檔 (find / -type f -mtime -1 -perm /111 2>/dev/null)

緊急處理 SOP

  1. 保護現場:cp /proc//exe /tmp/suspicious_bin、netstat -antup > /tmp/netstat.log
  2. 降級服務:停用非核心服務、啟用維護頁面、限流
  3. 收集證據:sosreport、dmesg -T、journalctl --since "1 hour ago"
  4. 安全重啟:若確認被入侵,單用戶模式掛載檔案系統檢查、重裝系統

預防性監控建議

  • 部署 Node Exporter + Prometheus + Grafana 監控核心指標
  • 設定關鍵告警:Load > CPU*2、Mem Available < 15%、Disk Usage > 80%、TCP 連接數突增
  • 啟用 kdump 獲取核心崩潰轉儲
  • 定期演練災難恢復流程
Copyright © Windows教程網 All Rights Reserved