網站半夜突然掛了、資料庫莫名重啟、SSH 卡到連不上——這些症狀背後最常見的原因是記憶體耗盡。本文教你確認問題、緊急處理和長期解決。

第一步:確認是不是記憶體問題

SSH 登入後執行 free -h,重點看 available 欄:長期低於 200M 說明記憶體吃緊。再執行 dmesg | grep -i kill,如果看到 Out of memory: Killed process 字樣,說明核心的 OOM Killer 已經在殺程序了——你的服務「莫名消失」就是被它殺的。

第二步:找出吃記憶體的程序

執行 top 後按 Shift+M 按記憶體排序,常見元兇:

  • MySQL:預設配置假設記憶體充裕,小記憶體機器要調低 innodb_buffer_pool_size;
  • PHP-FPM:程序數開太多,按記憶體÷單程序佔用估算 max_children;
  • 失控的應用:記憶體洩漏的 Node.js / Java 程式會持續增長直到耗盡。

第三步:新增 Swap 應急

Swap 是用磁碟充當的「後備記憶體」,能防止 OOM 直接殺程序。VPS 通常預設沒有 Swap,新增 2G 的步驟:用 fallocate 建立 swap 檔案、chmod 600 設定權限、mkswap 格式化、swapon 啟用,最後寫入 /etc/fstab 保證重開機後生效。注意 Swap 只是緩衝:記憶體真正不夠時系統會變慢但不崩潰,爭取到的是排查時間。

長期解決

如果調優後 available 仍然常年貼底、Swap 使用率居高不下,說明業務體量已經超過目前配置,升級記憶體是最划算的解法。00Shark 支援方案升級,聯繫客服說明目前用量即可評估。