集群环境有几台新增的机器,尝试修改open files的时候,按照平常的操作就是修改/etc/security/limits.conf
和/etc/security/limits.d/90-nproc.conf
使得重启后永久生效,然后执行ulimit -n 65536
这种使得当前生效。这样大多数情况是OK的,但是这里要注意有坑,首先是否真正的生效,需要通过其他机器直接ssh username@ip
来直接登录到修改的服务器的username
用户下,然后执行ulimit -a
查看是否正常。不能直接先在root
权限下,通过su
命令切换到普通用户下查看,这种查看效果看起来是生效了,但是实际上是使用的root
用户的配置,不是mmtrix
的配置。所以要在其它服务器上直接通过ssh
登录普通用户查看。
本人遇到的问题是,对于CentOS6.5
直接依据上述操作修改正常,但是刚好新增的几台机器系统版本号不一样,这也是坑。。。然后有一台是CentOS 7.4
,通过上述方法改完后并没有什么卵用,经google查阅文档了解对于CentOS
部分版本,关于各种系统限制和PAM
存在冲突,从而导致修改失败。问题排查步骤如下:
首先要查看系统整体对每个用户设置的文件句柄的最大限制:cat /proc/sys/fs/file-max
,这个值要大于我们需要设置的值,否则配置是无效的。修改这个值的方式:
vim /etc/sysctl.con
#新增一行
fs.file-max = 100000
修改完毕后执行sysctl -p
即可成功修改。这里确定没问题后,再修改pam的配置文件,
具体就是编辑/etc/pam.d/login
文件,新增一行:session required pam_limits.so
内容。这些配置完毕后再重新登录到普通用户查看,如果还是发现open files
未修改成功,那么就需要进行下一步修改ssh的配置,编辑/etc/ssh/sshd_config
配置文件,配置UsePrivilegeSeparation no
和UsePAM no
,然后通过service sshd restart
重启sshd服务,再重新ssh登录普通用户,这时执行ulimt -a
发现配置已经生效了。
针对以上问题,如果未修改成功,还有一个现象供参考是普通用户执行ulimit -n xxx
的时候,一般由于配置未生效,如果配置的值过大会提示
-bash: ulimit: open files: cannot modify limit: Operation not permitted
即虽然改了limits.conf
相关配置文件,但是发现修改的允许范围值还是很小,此时按照以上步骤本人集群机器上问题已经解决。