在 Linux 中,进程可以打开的 inotify 实例数量受到每个用户 ID 最大数量的限制,在/proc/sys/fs/inotify/max_user_instances
自然的事情是限制每个进程,例如文件 FD。由于 inotify FD 受到用户 ID 的限制,因此在许多进程可能使用相同用户 ID 运行的服务器上,它更有可能达到限制。但我想这一定是有原因的?
这是一个编程问题,因为我必须在代码中使用 inotify 并希望为系统设置正确的限制。
原因是为了防止非 root 用户通过使用以下命令监视大量文件来 DoS 系统:inotify
. inotify
结构需要不可忽略的内存量来维护(并且不能将其交换到磁盘),因此需要对非特权可以提交的内存量进行一些限制。
epoll
曾经有类似的限制(max_user_instances
and max_user_watches
),虽然最后max_user_instances
被删除并且max_user_watches
刚刚设置为内存的 4%。
也许应该为 inotify 提交一个类似的补丁,但到目前为止还没有。
由于完全不同的原因,文件描述符在每个进程上受到限制:当进程启动时,会分配一个文件描述符表,其大小与允许的最大文件描述符数成正比。保持它尽可能小可以减少每个进程的内存开销。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)