问题描述
2023年7月31日11点02分,主机安装elasticsearch后无法登陆,通过后台查看主机宕机状态,CPU达到100%,按业务侧要求执行重启操作后发现主机黑屏无法正常进入系统,系统卡死。
2.原因分析
2.1通过故障现象分析,主机CPU占用率逐渐增大,判断有异常进程持续运行,挂载镜像进入救援模式,执行chroot /mnt/sysimage可正常进入系统环境。
2.2查看系统/var/log/messages日志发现7月26日在文件/etc/sysctl.conf中添加参数vm.min_free_kbytes=16384000后系统出现问题。
2.3 vm.min_free_kbytes=16384000
该参数表示强制Linux VM最低保留多少空闲内存(kbytes),当可用内存低于这个参数时会启动 kswapd 进行内存回收。
经查询16GB内存主机默认数值仅有 67584,而故障主机设置参数为16384000,约等于主机16G内存,因为数值(通过vm.min_free_kbytes计算得到)设置过高kswapd 经过回收后仍未达到要求数值,所以 kswapd 持续运行,系统会触发直接内存回收(direct reclaim)导致系统夯死,CPU利用率达到100%。
3.处理过程
3.1查看/etc/sysctl.conf文件信息,备份/etc/sysctl.conf文件。
3.2用vi编辑文件/etc/sysctl.conf,注释vm.min_free_kbytes=16384000行,保存退出。
3.3执行reboot操作,主机重启正常进入系统。
4.故障总结
本次故障原因是由于业务侧在/etc/sysctl.conf配置文件中添加vm.min_free_kbytes=16384000参数后kswapd 持续运行,系统触发直接内存回收(direct reclaim)导致系统夯死,重启后无法进入系统。
举一反三:建议平时在修改配置文件时要多理解参数实际含义后再进行添加或修改,避免操作对系统产生影响。