美文网首页
netty百万连接测试服务器故障解决

netty百万连接测试服务器故障解决

作者: CallMe兵哥 | 来源:发表于2020-12-22 16:59 被阅读0次

    问题描述:

    1. 因为做性能测试,修改了“/etc/security/limits.conf ”文件,在文件最后加上了如下信息:
    • soft nofile 2000000
    • hard nofile 2000000
    1. 导致系统无法通过SSH连接。
    2. 系统重启后,无法正常进入系统。

    问题解决办法:

    1. 通过“单用户模式”,修改“/etc/security/limits.conf ”文件,删除
    • soft nofile 2000000
    • hard nofile 2000000

    ​ centos8.0系统单用户模式进入参见Centos8 进单用户模式

    1. 如果还是启动失败,需要禁用SElinux
    # 查看状态
    sestatus
    # 临时禁用命令 1
    setenforce 0
    # 临时禁用命令 2
    setenforce Permissive
    

    永久禁用SElinux

    vi /etc/selinux/config
    
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    #enforcing
    # SELINUXTYPE= can take one of these three values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected.
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    

    修改的参数如下:

    • SELINUX=disabled
    1. 重启系统
    reboot
    

    第一次维护过程

    1. 维护人员通过“单用户模式”进入操作系统,将两个参数修改为
    • soft nofile 65535
    • hard nofile 65535
    1. 系统还是无法进入报错如图所示


      netty百万连接测试服务器故障解决-1系统报错.png
    2. 根据报错的提醒信息,我们估计为“OpenSSH server”出了问题,于是再次进入单用户模式删除了“OpenSSH server”,结果服务还是无法启动。

    分析过程

    1. 几个同事共同分析,拿到了服务器上面的截图
    netty百万连接测试服务器故障解决-2limit文件第一次修改侯内容.png

    我们另外拿到了另外一个服务器上面的limits.conf,结果这个limits.conf文件还有错,最后一个 End of file 前面没有 “#”号,所以我们初步分析可能是文件有问题。

    1. 通过“单用户模式”我们找到了服务器的报错日志,这一步非常非常重要

      cat /var/log/secure | more
      

      找到的错误日志如下:


      netty百万连接测试服务器故障解决-3系统错误日志.png

      错误信息非常明确说明limits.conf文件,解析错误,可是为什么错,我们没找到原因。

    2. 到这个时候,其实我们内心是崩溃的,limits.conf文件明明没有任何问题,系统还是无法启动,我们也认为是自己卸载了“OpenSSH server”服务导致系统无法启动。

    3. 于是几个同事继续分析原因:

      怀疑是limits.conf权限的问题?

      ​ 单用户模式下:使用 ll -Z /etc/security/limits.conf 命令发现无效,于是改成 ls -Z /etc/security/limits.conf。

      ​ 后面核对了权限,权限没有任何问题。

      怀疑是“OpenSSH server”服务卸载导致的问题?

      ​ 于是折腾了一个centos8.0的系统安装到U盘,下载了“OpenSSH server”服务,准备现场安装

      怀疑是limits.conf格式的问题?

      ​ 单用户模式下执行命令:restorecon /etc/security/limits.conf,恢复文件。

      怀疑可能是打开了selinux,直接修改导致context出错。

      ​ 单用户模式下执行命令:restorecon /etc/security/limits.conf,恢复文件。

      经过上面几个分析,我们也没有其它的选择了,只能再次去现场解决问题。

    第二次现场解决

    1. 我们先是检查了limits.conf文件的内容,修改成跟其他未设置任何参数的服务一样。

    2. 执行了命令

      restorecon /etc/security/limits.conf
      

      执行完成以后,发现没有任何变化,不知道执行完成后的结果。

    3. 执行完上面两步以后,我们选择重启服务,结果还是无法进入系统,于是我们尝试通过U盘启动,折腾了半天也没有成功从U盘启动。

    4. 最后没有选择了,我想只能关闭selinux了,于是我们选择关闭selinux。关闭selinux成功登录系统。

    5. 成功登录系统以后发现没有了“OpenSSH server”服务(因为之前已经删除了),于是重新安装,重启docker服务及其他应用服务。

    分析时查阅的网页

    1. Centos8 进单用户模式

    2. linux centos limits.conf 修改错误,无法登陆问题修复

    3. 修改linux 最大文件限制数 ulimit

    4. CentOS 7修改程序最大打开文件数

    5. cannot read settings from /etc/security/limits.conf: Permission denied closed

    6. SELinux

    7. Can not login after change limits.conf

    8. 如何在centos8 上禁用SElinux

    9. 理解Linux下的SELinux

    鸣谢

    ​ 最后要感谢我们公司的陈总,虽然这个事跟他关系不大,但是他非常热心的帮我们找问题,SELinux的问题,也是他找出来的,虽然他不一定能看到我这个博客,但是还是十分感谢他。

    相关文章

      网友评论

          本文标题:netty百万连接测试服务器故障解决

          本文链接:https://www.haomeiwen.com/subject/itbsnktx.html