7

在 Linux 中,进程可以打开的 inotify 实例数的限制受/proc/sys/fs/inotify/max_user_instances中指定的每个用户 ID 最大数的限制

自然的事情是限制每个进程,例如文件 FD。由于 inotify FD 受用户 ID 的限制,因此它更有可能达到服务器上的限制,许多进程可能以相同的用户 ID 运行。但我想这一定是有原因的?

这是一个编程问题,因为我必须在我的代码中使用 inotify 并希望为系统设置正确的限制。

4

1 回答 1

13

原因是为了防止非 root 用户通过查看大量使用inotify. inotify结构需要不可忽略的内存量来维护(并且不能交换到磁盘),因此需要对非特权可以提交的数量进行一些限制。

epoll曾经有类似的限制(max_user_instancesmax_user_watches),尽管最后max_user_instances被删除了,max_user_watches只是设置为内存的 4%。

可能应该为 inotify 提交一个类似的补丁,但到目前为止还没有。

由于完全不同的原因,文件描述符在每个进程的基础上受到限制:当进程启动时,分配了一个文件描述符表,其大小与允许的最大文件描述符数成正比。保持这个尽可能小可以减少每个进程的内存开销。

于 2012-09-03T16:13:54.280 回答