我有一台 Ubuntu 16.04 服务器。
当我以 root 身份运行时,ulimit -n
得到 1024。
当我以我的用户身份运行它时,我得到 65535。
但我想确保所有用户(包括 root)的打开文件限制都设置为 65535。
问题是我已经尽我所能去改变它,但对于 root 它仍然显示 1024。
以下是我所做的事情:
root@sensu:/etc/security/limits.d# cat 90-nofiles.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root@sensu:/etc/security# grep nofile limits.conf
# - nofile - max number of open files
* soft nofile 65535
* hard nofile 65535
root@sensu:/etc/security# grep file-max /etc/sysctl.conf
fs.file-max = 65536
我当然跑了sysctl -p
。
出现问题的进程是redis:
root@sensu:/proc# grep "open files" /proc/1487/limits
Max open files 4096 4096 files
查看 redis 初始化文件:
root@sensu:/proc# grep ulimit /etc/init.d/redis-server
ulimit -n 100001
正如您在示例中看到的,没有理由将此限制设为 1024,而且...它仍然是 1024。
可能是什么原因?我遗漏的设置在哪里?
答案1
我找到了答案这个 stackoverflow 帖子。
好像添加:
* soft nofile 65535
* hard nofile 65535
编辑非 root 用户的限制时就足够了。
但为了也改变 root 用户的限制,必须明确添加:
root soft nofile 65535
root hard nofile 65535
现在它可以按预期工作了:
root@sensu:~# ulimit -n
65535