首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >INotify max_user_instances和max_user_watches到底有什么区别?

INotify max_user_instances和max_user_watches到底有什么区别?
EN

Unix & Linux用户
提问于 2019-07-29 09:54:36
回答 1查看 6.4K关注 0票数 8

在网上读了一些文章后,我有点不明白INotify,max_user_instances和max_user_watches之间的区别。

来自官方的Linux男子:

/proc/sys/fs/inotify/max_user_instances --这指定了每个实际用户ID可以创建的INotify实例数量的上限。

/proc/sys/fs/inotify/max_user_watches --这指定了每个实际用户ID可以创建的手表数量的上限。

这是否意味着max_user_instances是INotify进程的一个实例,它可以监视多个文件系统并限制由max_user_watches指定的文件系统?

如果前者是真的,那么它在实践中如何运作呢?每个必须监视某些文件系统的进程都在创建INotify的用户实例(我认为这并不是因为它与用户id有关)?

目前,在亚马逊Ec2实例上部署之后,出现了如下错误:

代码语言:javascript
运行
复制
 System.IO.IOException: The configured user limit (128) on the number of INotify instances has been reached.

如果我正确理解的话,创建的实例太多了,它们正在监视文件系统的更改吗?原因是什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-07-30 01:22:23

“实例”是由inotify_init()返回的单个文件描述符。一个inotify文件描述符可以由一个进程使用,也可以由多个进程共享,因此它们是按用户配给的,而不是每个进程。

"watch“是一个文件,由inotify实例观察。每只手表都是独一无二的,所以它们也是按用户配给的.

如果一个应用程序创建了太多的实例,它要么启动太多的进程(并且在进程之间不共享inotify文件描述符),要么它只是简单的buggy -例如,它可能泄漏打开的inotify描述符(打开,然后在不关闭的情况下忘记它们)。

还有一种可能性,就是应用程序编写得很糟糕,并且使用了多个描述符,其中一个描述符就足够了(您几乎永远不需要超过一个inotify描述符)。

打开的文件描述符可以通过procfs列出:

代码语言:javascript
运行
复制
ls -al /proc/<application process number>/fd/

/proc/<PID>/fdinfo/<descriptor number>中可以看到一些关于描述符的额外信息。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/532709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档