inotify FD - 为什么是每个用户 ID 的限制而不是每个进程的限制?

2024-01-17

在 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(使用前将#替换为@)

inotify FD - 为什么是每个用户 ID 的限制而不是每个进程的限制? 的相关文章

随机推荐

  • R Shiny:本地运行应用程序与部署应用程序时导出的 PNG 分辨率不同

    我想在部署的 Shiny 应用程序中创建具有手动指定分辨率的 PNG 图像 此 PNG 图像应保存在我的 Dropbox 中 由于某种原因 我的 Shiny 应用程序的部署版本没有采用res内的论证png功能考虑在内 考虑以下示例 Load
  • 如何获得high_resolution_clock的精度?

    C 11 定义high resolution clock它有成员类型period and rep 但我不知道如何才能得到精确那个时钟的 或者 如果我可能无法达到精确度 我是否可以至少以纳秒为单位得到一个计数最小可表示持续时间刻度之间 可能使
  • 用作异步任务时出现后台服务错误

    我在 Xamarin Android 中有一个后台服务 但问题是我无法将其用作Async方法 它给出一个错误 返回类型必须是 StartCommandResult 以匹配重写成员 Service OnStartCommand Intent
  • XSLT 具有重叠元素?

    所以这篇文章的标题可能有点误导 但这是我能想到的最好的标题 我正在开发一个使用 TEI 进行文本编码的项目 我当前工作的要求之一是编写 XSL 转换以将 XML 编码的文本呈现为 HTML 大多数情况下 没有问题 不过 我对这个问题有点困惑
  • 选择器不区分大小写?

    我正在尝试使用 jQuery 进行 XML 处理 我使用 jQuery 遇到的问题之一是它在处理标签和属性时不区分大小写 例如 考虑以下代码 div div
  • 将术语转换为原子并在 YAP prolog 中保留变量名称

    有没有办法配置 YAP 和 或 SWI prolog 以便它们在任何调用中保留变量名称term to atom 2 例如 当我执行此操作时 term to atom member X 1 2 A 我得到这个答案 A member 13140
  • 如何确定 HTML5 拖放文件上传 API 是否存在(如 FF3.6 中的 API)

    我正在编写一个应用程序 该应用程序应该支持文件的 HTML5 拖 放 API 非常类似于所描述的here https developer mozilla org en Using files from web applications Se
  • dplyr 过滤器不适用于润滑时间格式?

    当试图回答时这个问题 https stackoverflow com questions 46360218 delete all times less than a specified value 我遇到了使用问题filter from d
  • 在后台执行命令

    我正在实现一个迷你 shell 它将模拟真正的 bash shell 我在后台执行命令 例如ls 我的第一个方法如下 不起作用 char execArgs ls NULL execvp ls execArgs 然后我尝试了另一种方法 修改父
  • 如何将多个参数传递到 JavaScript 回调函数中?

    JavaScript 代码 function doSomething v1 v2 blah function SomeClass callbackFunction callbackFuncParameters Array this call
  • Jython 2.5.1:从 Java 调用 __main__ - 如何传入命令行参数?

    我在 Java 中使用 Jython 所以我有一个类似于下面的Java设置 String scriptname com blah myscript py PythonInterpreter interpreter new PythonInt
  • 从元组列表中提取不同的值

    如何从以下元组列表中提取不同值的列表 tuple test 123 test 465 test 8910 test2 123 我想得到一个像这样的列表 different values test test2 现在我想通过这个 键 访问所有值
  • 在运行时填充多维向量

    显然这不起作用 所以代码是错误的 但我该如何修复它呢 据我所知 这整件事可能是错误的 哈哈 但我正在尝试创建一个在运行时创建自身的多维向量 我收到错误 vector subscript out of range include
  • jersey ws 2.0 @suspended AsyncResponse,它有什么作用?

    我正在分析一些 jersey 2 0 代码 我对以下方法如何工作有疑问 Stateless Path mycoolstuff public class MyEjbResource GET Asynchronous does this mea
  • 单例继承

    如何从单例类继承到需要相同功能的其他类 这样的事情有意义吗 乔恩 斯基特写过这个 http codeblog jonskeet uk 2006 01 19 singleton inheritance 一会儿回来 是可以实现的some尽管使用
  • QAbstractItemModel 线程安全

    我的实施QAbstractItemModel正在监听一些事件 并在单独的线程中处理更新 更新的处理可能会导致模型中的布局和 或数据更改 数据本身的存储方式是boost mutex 受到保护 每次通话QAbstractItemModel的接口
  • 如何让输入无线电元素在反应 [material-ui] 中水平对齐?

    在 Material ui 中 无线电组始终垂直列出 有没有办法让它们水平对齐 例如所有单选按钮都在一根水平线上 只需使用row财产 https material ui com api form group props
  • WCF 数据契约与类序列化

    我知道如果我们使用数据契约 我们可以对类有更多的控制 但是 请考虑以下两种情况 DataContract public class Customer DataMember public string CustomerName get set
  • 对目录使用 OpenFileDialog,而不是 FolderBrowserDialog

    我想在我的应用程序中拥有一个文件夹浏览器 但是I don t想要使用FolderBrowserDialog 有几个原因 比如使用起来很痛苦 我想使用标准的 OpenFileDialog 但针对目录进行了修改 举个例子 Torrent htt
  • inotify FD - 为什么是每个用户 ID 的限制而不是每个进程的限制?

    在 Linux 中 进程可以打开的 inotify 实例数量受到每个用户 ID 最大数量的限制 在 proc sys fs inotify max user instances 自然的事情是限制每个进程 例如文件 FD 由于 inotify