我曾尝试启动一个脚本来监听数千个 tcp 端口(1000 到 10000),但似乎达到了 1024 个监听端口的限制。我已通过 netstat 确认了这一点,并关闭了超过一定范围的端口。
Linux 中监听端口是否有固定的限制?如果可能的话,如何提高这个限制?
答案1
您可能达到了 nofile 限制,默认为 1024。
在运行程序之前,尝试在 shell 中提高 ulimit -n,例如:
$ ulimit -n 20480; ./myprogram
当然,您必须具有将 nofile 限制提高到如此高的权限,因此请使用以下命令检查当前的软限制和硬限制:
$ ulimit -a
并在 /etc/security/limits.conf 或 /etc/security/limits.d/*conf 中提出它们
答案2
顺便说一句,我没有提到该程序/脚本是由 xinetd 启动的,并且 xinetd 忽略了 ulimit nofile 设置,现在查看 xinetd 源代码以尝试绕过这个限制。