今天突然收到server廠商的mail說某台測試server cpu高,於是便訪問那個測試站,發現網站直接進不去了,使用終端機居然也連不上!

看了VPS後台,CPU連續2小時高居不下,硬碟IO也是超高

螢幕擷取畫面 2025-07-16 102054.png

由於連終端機都連不上,只好整個reboot,重啟以後發現php跟mariadb自動啟動仍失敗。之前也遇過這情況是因為硬碟空間不到導致的

但我使用 df -h 查詢,發現空間還夠,還有個30%左右。所以也不是硬碟的空間的問題。問了chatGPT得出的問題點,可能在於inode用盡的關係

使用以下指令排查了一下

for d in /*; do echo $d; find $d -xdev -type f | wc -l; done | paste - - | sort -k2 -n

顯示

/var 2695674

果然是inode的關係,又進一步排查

for d in /var/*; do echo $d; find $d -xdev -type f | wc -l; done | paste - - | sort -k2 -n

顯示 /var/spool 2364614

繼續排查

for d in /var/spool/*; do echo $d; find $d -xdev -type f | wc -l; done | paste - - | sort -k2 -n

顯示 /var/spool/postfix 2364608,找到真正主因了,就是postfix搞的鬼。看來是被人大量發垃圾mail了


這台以前測試有裝postfix,但沒實際在用,平時也無感,就沒理會它。

解決辦法

解法1.使用 postfix 工具清空佇列(建議)

postsuper -d ALL

解法2.直接刪除所有檔案(快速粗暴,但同樣有效)

rm -rf /var/spool/postfix/*


會需要跑大概幾分鐘,假如跟我依樣有幾百萬筆的話。


由於我沒有要使用postfix,所以最佳做法就是關掉它,避免下次再發生。

systemctl stop postfix

systemctl disable postfix


刪除檔案後,可以用 df -i 再次檢查看看,inode是否有降下來了。


除了postfix以外,像是/tmp、php session、log 也都是可能會塞爆inode的元兇,平時可以注意一下是否有異常激增或設定不當。


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/server-high-cpu-diskio-problem
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記