为某个进程设置非常高的 ulimit 是否安全?

为某个进程设置非常高的 ulimit 是否安全?

我目前有以下/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 等其他资源。

相关内容