/etc/security/limits.conf
是否有日誌檔案在超出設定的值時記錄資訊?
如果上述文件中的值太緊,則使用伺服器上託管的網站的用戶端會看到諸如 之類的錯誤[FATAL] failed to allocate memory
。但我不會因此而被嚇倒。那麼有日誌嗎?
如果沒有,有沒有辦法在超過值時記錄它?
答案1
對於您想要做的事情來說,limits.conf 是一個太生硬的工具。
cgroups 會設定限制並為您提供會計信息,但文件有點遲鈍!https://www.kernel.org/doc/Documentation/cgroups/memory.txt
答案2
是否有一個日誌檔案在超出 /etc/security/limits.conf 中設定的值時記錄資訊?
沒有。
所有這些值最終都會達到進程資源限制 ( man setrlimit
),並且當它們滿足時,沒有通用機制來發出要記錄的警告。
答案3
如果您的問題是記憶體分配失敗,您也可以使用此腳本來監視剩餘可用記憶體的百分比
#!/bin/bash
# you can adjust 0.20 meaning 20% to percentage of memory free you want
output=$(free | grep "Swap" | awk '{if (($4/$2) < 0.20) print "memory low"}')
if [[ "$output" != "" ]]; then
echo "..." | mail -s "Memory low on <host>" <monitoring email>
fi
將其保存到腳本檔案(例如memmon.sh)並添加到crontab,當檢測到可用記憶體較低時,它將發送電子郵件並寫入日誌檔案)
# Ex. monitor every 3 min.
*/3 * * * * /home/user/memmon.sh >> /home/user/memmon.log