我目前有以下/etc/security/limits.d/90-nproc.conf
基于 Mongo DB 的条目推荐的 ulimit 设置。
mongod soft nofile 64000
mongod soft nproc 64000
我需要大幅增加允许的文件描述符数量,比如说。999999
在正常情况下,每天可能只有几千个文件被访问。文件数量如此之多的原因是 WiredTiger 存储引擎的工作方式。它每个集合使用多个文件,而我有数千个这样的文件。
这种情况会有什么负面影响吗?
打开大量但大部分未使用的文件描述符是否会损害系统性能?
答案1
nproc
是进程数限制。如果你指的是你想要的文件nofiles
。
它只是一个最大限制计数器。除非系统上使用的东西太多,否则增加限制不会占用资源。
64k 是很多进程。您的性能可能会受到影响,具体取决于您拥有的内存和 CPU 数量。Linux 调度程序的开销可能会因这么多任务而变得非常大。
如果需要的话,还可以调整文件描述符,如下所述关于 ulimit 的 mongodb 参考。文件描述符相对较轻,每个打开的文件和套接字都需要一个,但 64k 仍然很多。
答案2
我发现的一个问题是,如果我们为用户提供过多的 nproc,而用户实际上由于代码中的错误而能够访问,那么 root 将无法执行任何操作。另一个问题是每个进程都需要资源来维持其状态并进行处理,如果我们提供那么多资源,开发人员可以利用系统,并且系统处理起来肯定有问题,而且对于如此大的限制,您还必须考虑 RAM 等其他资源。