超過限制時記錄

超過限制時記錄

/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

相關內容