設定された値/etc/security/limits.conf
を超えたときに情報を記録するログ ファイルはありますか?
上記のファイルの値が厳しすぎると、サーバー上でホストされている Web サイトを使用するクライアントに次のようなエラーが表示されます[FATAL] failed to allocate memory
。しかし、私はそれについて恐れることはありません。ログはありますか?
そうでない場合、値を超えたときにログに記録する方法はありますか?
答え1
limits.conf は、あなたがやろうとしていることに対しては、あまりに鈍い手段です。
cgroup は制限を設定し、アカウントを提供しますが、ドキュメントは少しわかりにくいです。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