/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