集群环境有几台新增的机器,尝试修改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 noUsePAM no,然后通过service sshd restart重启sshd服务,再重新ssh登录普通用户,这时执行ulimt -a发现配置已经生效了。
  针对以上问题,如果未修改成功,还有一个现象供参考是普通用户执行ulimit -n xxx的时候,一般由于配置未生效,如果配置的值过大会提示

-bash: ulimit: open files: cannot modify limit: Operation not permitted

  即虽然改了limits.conf相关配置文件,但是发现修改的允许范围值还是很小,此时按照以上步骤本人集群机器上问题已经解决。