fs.file-max、nofile软硬限制、LimitNOFILE这三处必须同步调高,且ulimit -Sn不能超过ulimit -Hn;limits.conf需配置软硬两行,同时要确保pam_limits.so加载;systemd服务必须单独设置LimitNOFILE;任何一个环节遗漏都会报“Too many open files”。

Linux怎么修改系统的最大文件句柄数

单靠 ulimit -n 改不了系统最大文件句柄数,它只管当前 shell 子进程;真正生效必须同步调高三个地方:fs.file-max(系统总池)、nofile 软硬限制(用户级单进程上限)、LimitNOFILE(systemd 服务专用),漏一个都会继续报 Too many open files

为什么 ulimit -n 65535 设置后还是 1024

不是命令输错了,而是软限制被硬限制卡死了。普通用户执行 ulimit -Sn 65535 时,如果 ulimit -Hn 输出是 4096 或更低,该命令会被静默截断——软限永远不能超过硬限。

/etc/security/limits.conf 配了却没生效的常见原因

写了配置但 ulimit -n 仍是 1024,大概率是 PAM 没加载或顺序被覆盖。

systemd 服务的 LimitNOFILE 必须单独设

/etc/security/limits.confsystemctl start 启的服务完全无效,因为 systemd 不走 PAM 登录流程。

fs.file-max 必须同步调高,否则系统总池先耗尽

单个进程开到 65535 没用,如果 /proc/sys/fs/file-max 太小(比如默认 32768),多个进程一起开句柄,系统总池先撑爆,照样报错。

容易被忽视的是,systemd服务根本不会读取limits.conf,但很多人调整完ulimit就觉得没问题了;还有些人只改了软限,却忘记了硬限,或者改了用户级就跳过了fs.file-max。这四个要点,只要有一个没做到位,Too many open files错误就会照样出现。

本文转载于:https://www.php.cn/faq/3018669.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。