记录一次轰轰烈烈的翻车事件,limits.conf的值设置得超过/proc/sys/fs/nr_open的值后导致ssh连接不上。。。

  事情的经过是这样婶的…
  由于在做接口压测,需要放开文件打开数以增加http连接数,于是我ulimt -n 6553500,但是系统却报错了:
image-1667200401489

  脑残的我以为是ulimt -n 有其他约束,又想起文件打开数还能在limits.conf修改,
  
  于是我修改了limits.conf为:

vi /etc/security/limits.conf

* soft nofile 6553500
* hard nofile 6553500

然后淡定的保存了

结果发现,ssh怎么也连接不上了,一顿疯狂排查,才找到原因

  原来,nofile的值的上限是由/proc/sys/fs/nr_open限制的,默认是1048576,超过这个值就会导致连接ssh失败,报错日志为:pam_limits(login:session): Could not set limit for ‘nofile’: Operation not permitted

  limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so的配置文件,而且只针对于单个会话。即在登录shell时,需要设定limits的值,但由于设定的值过大导致设置失败,无法登录shell,ssh自然也就连接不上了。

在这里插入图片描述
找到原因后,就得想办法救命了
 

解决办法:

进入单用户模式将nofile修改为小于1048576的值,然后重启即可。
https://blog.csdn.net/lcm_linux/article/details/103166115

引以为戒,系统参数不要瞎改!!!改前一定要先做了解!!!