监控打开文件的限制等

监控打开文件的限制等

最近,我们已达到一些服务的最大打开文件数限制。此外,还存在许多其他限制。有没有办法监控进程接近这些限制的程度,以便在需要提高限制或修复根本原因时收到警报?同样,是否可以查看这些事件的日志,以便我们知道崩溃是由于达到其中一个限制而发生的?

答案1

是的,你可以。/proc/<pid>/fd列出所有打开的文件描述符。内存使用情况可以在中看到/proc/<pid>/{maps,smaps}。只需浏览/proc/<pid>一下并谷歌一下你不理解的文件 :)

答案2

假设是一个Linux服务器。

查看全局最大打开文件数:

cat /proc/sys/fs/file-max

查看全局当前打开的文件:

cat /proc/sys/fs/file-nr

更改全局最大打开文件数:

sysctl -w fs.file-max=1000000 or edit sysctl.conf

查看当前用户的限制:

ulimit -Hn   (hard limit)
ulimit -Sn   (soft limit)

更改用户限制:编辑/etc/security/limit.conf以设置网络服务器的限制,例如

apache2 soft nofile 4096
apache2 hard nofile 10000

您可以运行一个脚本/proc并得到一些统计数据:

for pid in $(pgrep apache2); do ls /proc/$pid/fd | wc -l; done

相关内容