尽管我更新了 sysctl,但可能的连接仍少于 1000 个

尽管我更新了 sysctl,但可能的连接仍少于 1000 个

我在 CentOS 7.2 机器上运行 c1000k,它告诉我

connections: 921
error: Too many open files

因此,我改变了我的内容/etc/sysctl.conf以包含此内容:

fs.file-max = 2097152

但即使重新启动后,我仍然遇到相同的限制。ulimit -Sn并分别ulimit -Hn打印。10244096

答案1

有效(软)1024 个描述符 ulimit 是进程的总数,包括用于非连接目的的描述符。显然,该进程将大约 100 个描述符用于其他用途,只留下 921 个用于连接。 lsof -p <process-id>将向您展示如何使用描述符。

要允许更多描述符,请在启动进程之前提高软限制。如果你从 bash 运行它,那就是:

    ulimit -Sn 2048

将其提高到 2048 以供将来的命令使用。要将软限制提高到允许的最大值(硬限制,在本例中为 4096),您可以执行以下操作:

    ulimit -Sn unlimited

如果您只想将提升的限制应用于一个命令,而不应用于其他未来的命令,请在子 shell 中提高限制:

    (ulimit -Sn 2048 ; c1000k)

如果您想超出当前 4096 个描述符的硬限制,则可以从具有足够权限的用户帐户运行测试来提高硬限制,或者您可以更改登录时设置的初始硬和软 ulimit 值。通过修改/etc/security/limits.conf或(更好)通过在/etc/security.d.请参阅文件中的注释limits.conf或运行man limits.conf以获取详细信息。

相关内容