经过大量搜索,我终于发现 systemd 的标准限制为 4096,无论您在系统级别设置什么,systemd 级别始终优先。解决此问题的方法是通过编辑 /etc/systemd/system.conf 并添加以下设置来更改 systemd 打开文件限制
DefaultLimitNOFILE=65536
似乎systemd中有很多默认设置覆盖了系统设置,所以必须在systemd中设置
因此,如果它对人们有用,这些是我为运行生产 redis 的 Ubuntu 16.04 服务器的最终设置。
编辑 /etc/systemd/system.conf (sudo nano /etc/systemd/system.conf) 并添加
DefaultLimitNOFILE=65536
编辑 /etc/security/limits.conf (sudo nano /etc/security/limits.conf) 并添加
* soft nofile 64000
* hard nofile 64000
root soft nofile 64000
root hard nofile 64000
编辑 /etc/pam.d/common-session (sudo nano /etc/pam.d/common-session) 并添加
session required pam_limits.so
编辑 /etc/pam.d/common-session-noninteractive (sudo nano /etc/pam.d/common-session-noninteractive) 并添加
session required pam_limits.so
编辑 /etc/rc.local (sudo nano /etc/rc.local) 并添加
sysctl -w net.core.somaxconn=65535
编辑 /etc/sysctl.conf (sudo nano /etc/sysctl.conf) 并添加
vm.overcommit_memory = 1
编辑 /etc/rc.local (sudo nano /etc/rc.local) 并添加
echo never > /sys/kernel/mm/transparent_hugepage/enabled