Ubuntu 16.04使用ulimit系统redis问题

时间:2016-09-15 08:14:25

标签: ubuntu redis systemd ubuntu-16.04 ulimit

从Ubuntu 14.04交换到16.04后,我的新redis服务器出现了问题。使用所有指南配置打开文件限制表示使用以下设置更改/etc/security/limits.conf

*    soft nofile 65535
*    hard nofile 65535
root soft nofile 65535
root hard nofile 65535

并且还要添加到/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive

session required pam_limits.so

我已经完成了所有这些更改,但redis仍然启动时文件限制为4096,在生产负载下,我们很快就达到最大连接数。

2 个答案:

答案 0 :(得分:31)

经过多次搜索后,我终于发现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

答案 1 :(得分:1)

sysctl值net.core.somaxconnvm.overcommit_memory是与ulimit或打开文件数相关的注释。 它们与:

有关

如果您的问题是打开文件的限制(ulimit -Sn/-Hn处理的话),那么除非您确切知道自己在做什么,否则我不会建议您使用它。