这是配置文件和详细信息,无论我做什么,软打开文件都不会超过 1024。
CENTOS 6.7 x86_64
猫/etc/security/limits.conf
* 软 nproc 65535
* 硬 nproc 65535
* 软 nofile 65535
* 硬 nofile 65535
猫/etc/security/limits.d/90-nproc.conf
* 软 nproc 65535
* 硬 nproc 65535
* 软 nofile 65535
* 硬 nofile 65535
root@server [~]# ulimit -n
65535
猫/etc/sysctl.conf
fs.文件最大值 = 65535
猫/proc/1/限制
最大打开文件数 1024 4096
当您运行 ulimit -n 时,它显示正确的限制,但是当您检查 cat /proc/1/limits 时,它显示 1024,服务器上的所有程序都受到 1024 openfiles 限制,它们都在 root 用户下运行。
答案1
您正在更改的限制仅影响已登录的用户,因为它们是由 PAM 作为登录过程的一部分实施的。它们对以其他方式启动的进程没有影响,例如由 systemd 或 init 直接启动的进程。
如果您想要更改由用户登录以外的其他方式启动的进程的限制,则需要在该进程本身中执行此操作。具有 root 权限的进程可以随意更改其限制。
# cat /proc/self/limits | grep -i open
Max open files 1024 1024 files
# ulimit -Hn 8192
# ulimit -n 8192
# cat /proc/self/limits | grep -i open
Max open files 8192 8192 files
# ulimit -Hn 65536
# ulimit -n 65536
# cat /proc/self/limits | grep -i open
Max open files 65536 65536 files
答案2
Limits.conf 和 Root
在 limits.conf 中使用*
仅适用于除 root 之外的所有用户。
如果要对根设置限制,则必须指定root
而不是(或除了)*
。
例子:
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
或者您可以按照另一个答案中提到的方式手动更改脚本中的限制。
笔记
这假设您的应用程序使用 pam。如果没有,您必须在脚本中设置限制。