在查看 /var/log/message 後,發現在死機前常有 Out of Memory 的問題發生,導致 kernel killed 了一些 process
OOM-killer (Out of Memory-killer)
顧名思義就是記憶體不足導致系統自動 Killer 一些程序,OOM-killer 存在於 Linux 較新的核心版本(2.6),比較麻煩的是造成死機的原因通常是因為 OOM-killer 殺掉了一些必要的執行程序,因為 oom-killer 僅考慮 lowmemory,即使物理記憶體還有許多 free/cache/buffer,只要 swap 不足就開始 oom-killer。
/var/log/message
Feb 20 11:19:33 Server kernel: Out of memory: Kill process 7352 (httpd) score 67 or sacrifice child
Feb 20 11:19:33 Server kernel: Killed process 7352, UID 48, (httpd) total-vm:1127828kB, anon-rss:309416kB, file-rss:20kB
在這裡有幾種作法可以參考
1. 增加動態 swap 空間
適合一開始安裝系統沒有分配好 swap 導致 swap 過小的問題,可以在安裝系統後增加動態 swap 來解決 swap 不足的窘境。
step1. 建立 swap 區,示範 4GB
$ dd if=/dev/zero of=/swap bs=1024 count=$[1024*1024*4]
step2. 將 /swap 設定為 swap 檔案型式
$ mkswap /swap
step3. 啟動 file mode swap
$ swapon /swap
step4. 查看 /swap 有沒有被掛載上
$ swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2050040 0 -1
/swap file 4019160 0 -2
step5. 設定開機自動掛載 file swap
$ vim /etc/fstab
/swap swap swap defaluts 0 0
$ reboot
若是要卸除 file swap 可以使用 swapoff /swap,記得 fstab 也要砍掉!
2. 有必要時停用 OOM-Killer
必須注意停用 OOM-killer 代表當 OOM 產生時無法再提供新的記憶體行為,都會被 request error。
$ echo 1 > /proc/sys/vm/overcommit_memory
Orignal From: Linux oom-killer kernel: Out of Memory: Killed 問題處理 & 手動增加動態 swap
沒有留言:
張貼留言