我在 CentOS 7.2 机器上运行 c1000k,它告诉我
connections: 921
error: Too many open files
因此,我改变了我的内容/etc/sysctl.conf
以包含此内容:
fs.file-max = 2097152
但即使重新启动后,我仍然遇到相同的限制。ulimit -Sn
并分别ulimit -Hn
打印。1024
4096
答案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
以获取详细信息。