【银河麒麟服务器操作系统·实例分享】虚机系统ssh无法正常登录访问,分析过程及处理建议

发布于:2024-08-13 ⋅ 阅读:(271) ⋅ 点赞:(0)

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

服务器环境以及配置

【机型】虚机

处理器:

Kunpeng-920

内存:

32G

整机类型/架构:

ARM

【内核版本】

4.19.90-25.21.v2101.ky10.aarch64

【OS镜像版本】

银河麒麟高级服务器操作系统 Kylin-Server-10-SP2-Release-Build09-20210524-aarch64

【第三方软件】

Java应用

现象描述

在2024年4月11日10点15分前后,发现虚机系统ssh无法正常登录,进入虚机控制台,也无法正常登录进入系统。过10分钟左右之后,可以ssh登录系统,使用top命令查看发现dbus占用单核cpu为99%,比较高。需要分析,系统在故障时间段内,不能正常登录使用的原因。如图1:

图1

现象分析

分析系统性能日志,查看故障时间段内2024.04.11 10点15分前后,系统性能是否有使用异常情况,分别查看系统整体CPU、内存和负载,未发现异常,查看磁盘IO读写性能,看到,在2024.04.11 10:10至10:20左右这个故障时间段内,磁盘IO读相较其他时间段,有明显增加,说明此时间段内,业务访问可能比较繁忙,如图2至图5:

图2 CPU

图3 内存

图4 负载

图5 磁盘IO

分析系统ssh登录日志secure,发现故障时间段内2024.04.11 10:06:37至10:21:54,login登录有一段找不到pam_console.so动态库模块信息输出“PAM unable to dlopen(/usr/lib64/security/pam_console.so): /usr/lib64/security/pam_console.so: cannot open shared object file: No such file or directory”,其他日志信息都是ssh会话正常登录信息。

进一步分析排查正常银河麒麟系统里,也没找到pam_console.so这个pam模块,说明系统未提供此pam模块,也没影响系统ssh和图形界面正常登录访问,这段找不到pam_console.so模块的信息输出,不是ssh和图形登录界面,无法正常登录访问的原因。如图6:

图6

分析系统messages日志,发现故障时间段内2024.04.11 10:02:16至13:19:05,有很多“kernel: [6147721.639282] VFS: file-max limit 655350 reached”异常日志信息输出,说明此系统上内核打开的文件句柄数量达到上限,当前系统的文件句柄数量已经超出了系统级文件句柄数量file-max设置。已知,Linux系统中的进程都会打开一定数量的句柄,如果所打开的句柄超过了限制,则会导致之后的申请失败,有可能会影响到后面,正常服务运行使用。如图7:

图7

通过sosreport系统日志,查看此系统资源配置文件/etc/security/limits.conf,可知,任何用户可以打开的最大文件描述符设置的是409600,任何用户可以打开的最大进程数是65536。查看系统级文件句柄数量和使用情况,可知,/etc/sysctl.d/my-default.conf自定义设置的系统级文件句柄数量fs.file-max为655350。如图8和图9:

图8

图9

进一步分析查看,当前系统文件句柄使用情况,发现,第一列表示当前系统已分配使用的文件句柄数量,超过了,系统级设定值。查看打开文件句柄数量进程的情况,发现,java进程打开文件句柄数量最多,如图10:

图10

分析结果

根据上述,系统层日志和配置分析情况,可以排除,故障时间段内,有系统性能方面的使用瓶颈,资源耗尽,导致业务虚机不能正常登录访问。同时排除openssh远程连接服务或系统图形登录界面服务lightdm有问题,导致。

导致此故障现象的原因,可能是,系统级文件句柄数量file-max设置的值较小,业务繁忙时间段,java等应用服务需要打开的文件句柄较多,超过了系统级设置值,导致之后正常系统服务申请失败,短时间内不能正常运行使用。过了一段时间之后,业务不繁忙,java等应用自动释放掉申请的文件句柄,可以正常登录访问系统。

后续计划与建议

建议排查相关应用,查看是否有需要进行检查和优化的方面。根据业务使用需求,调整增加系统层最大文件句柄打开数fs.file-max配置项参数,举例配置如下:

#echo “fs.file-max=6553500”  >>  /etc/sysctl.conf  --添加配置

#sysctl -p  --配置生效

#sysctl -a | grep fs.file-max  --查看配置是否生效