解决ubuntu修改limits.conf不生效

      一般优化高负载的服务器,都要修改/etc/security/limits.conf下面的参数,增加单个进程打开文件的最大数量,避免出现error: too many open files的错误,对于CentOS6,在limits.conf文件里面新增下列四行即可。

      然而今天折腾了一台安装ubuntu 14.04的服务器,修改limits.conf之后,重启系统,执行ulimit -n,发现设置没有生效。经过排查,limits.conf这个文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so模块的配置文件,然而,ubuntu的PAM默认并没有加载这个模块,导致最后limits.conf里面的配置不生效。

      解决方法很简单,编辑/etc/pam.d/su,找到下列行

# Sets up user limits, please uncomment and read /etc/security/limits.conf
# to enable this functionality.
# (Replaces the use of /etc/limits in old login)
# session required pam_limits.so

      把# session required pam_limits.so这一行前面的注释去掉就可以了。

      然而,重启之后发现,设置仍然没生效。谷歌半天,ubuntu的pam_limits.so有个bug,就是不支持通配符,没办法,把前面的通配符*换成具体的用户名吧,root,nobody,nginx,www等等。

      看来每个Linux不同的发行版都有不同的脾气,玩惯了CentOS折腾下Ubuntu,那感觉太酸爽,必须多多学习。

发表评论

电子邮件地址不会被公开。 必填项已用*标注