改了 limits.conf,ulimit 还是老值
在 /etc/security/limits.conf 里加了 * soft nofile 65535,重新登录 ulimit -n 还是 1024。三个原因按概率排:
一,limits.conf 由 pam_limits 读取,只在登录会话生效。systemd 拉起的服务不经过 PAM,读的是 unit 里的 LimitNOFILE=,默认继承 systemd 自己的值。
二,/etc/ssh/sshd_config 里如果开了 UsePAM no,SSH 登录也不生效。
三,* 不匹配 root,root 要单独写一行,或者用 root hard nofile。
最稳的做法是别依赖全局配置,在 unit 里写死:
[Service]
LimitNOFILE=65535
然后 systemctl daemon-reload && systemctl restart app,用 cat /proc/<pid>/limits 确认。