• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

内核报错kernelNMI-watchdog-BUG-soft-lockup-CPU1

linux 搞代码 3年前 (2022-03-03) 25次浏览 已收录 0个评论

集体博客:点击这里进入

1.景象形容

系统管理员电话告诉,形容为一台服务器忽然无奈ssh连贯,登录服务器带外IP地址并进入近程控制台界面后,提醒Authentication error,重启后即可失常进入零碎,进入后过20分钟又进入死循环

2.排查起因

登录零碎后无任何操作报错如下:

询问了度娘,发现此报错为内核锁死,简称“死机”,询问管理员后得悉,近期服务器装置了docker,可能因为负载过高导致

  • Soft lockup:这个bug没有让零碎彻底死机,然而若干个过程(或者kernel thread)被锁死在了某个状态(个别在内核区域),很多状况下这个是因为内核锁的应用的问题。
  • 内核参数kernel.watchdog_thresh(/proc/sys/kernel/watchdog_thresh)零碎默认值为10。如果超过2*10秒会打印信息,留神:调整值时参数不能大于60
  • Linux内核对于每一个cpu都有一个监控过程,在技术界这个叫做watchdog(看门狗)。通过ps –ef | grep watchdog可能看见,过程名称大略是watchdog/X(数字:cpu逻辑编号1/2/3/4之类的)。这个过程或者线程每一秒钟运行一次,否则会睡眠和待机。这个过程运行会收集每一个cpu运行时应用数据的工夫并且寄存到属于每个cpu本人的内核数据结构。在内核中有很多特定的中断函数。这些中断函数会调用soft lockup计数,他会应用以后的工夫戳与特定(对应的)cpu的内核数据结构中保留的工夫比照,如果发现以后的工夫戳比对应cpu保留的工夫大于设定的阀值,他就假如监测过程或看门狗线程在一个相当可观的工夫还没有执。Cpu软锁为什么会产生,是怎么产生的?如果linux内核是通过精心设计安顿的CPU调度拜访,那么怎么会产生cpu软死锁?那么只能说因为用户开发的或者第三方软件引入,看咱们服务器内核panic的起因就是qmgr过程引起。因为每一个有限的循环都会始终有一个cpu的执行流程(qmgr过程示一个后盾邮件的音讯队列服务过程),并且领有肯定的优先级。Cpu调度器调度一个驱动程序来运行,如果这个驱动程序有问题并且没有被检测到,那么这个驱动程序将会暂用cpu的很长时间。依据后面的形容,看门狗过程会抓住(catch)这一点并且抛出一个软死锁(soft lockup)谬误。软死锁会挂起cpu使你的零碎不可用。

3.具体分析

###### 1.零碎如下工夫2个工夫进行了重启:

Mar  3 21:53:16 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 ([email protected])
Mar  3 22:37:19 ser-node7 kernel: Linux version 3.10.0-957.el7.x86_64 ([email protected]) 

在重启前的一段时间均曾经呈现了cpu软锁的景象,而深入分析cpu软锁,咱们依赖于kdump产生的vmcore数据.

Mar  3 14:28:18 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [runc[1:CHILD]:52902]
Mar  2 18:14:59 ser-node7 kernel: NMI watchdog: BUG: soft lockup - CPU#3 stuck for 23s! [runc:[1:CHILD]:55961]

./systemctl_list-unit-files:kdump.service enabled
如果您之前曾经做过,那么请您额定批改/etc/sysctl.conf退出以下行:
kernel.softlockup_panic = 1
而后执行”sysctl -p”使参数失效。这样当零碎呈现cpu软锁景象时,会主动触发kernel panic,此时如果kdump能够失常工作,会生成vmcore.并主动重新启动零碎

2.另外在日志中咱们还留神了存在如下的告警,其和下面的soft lockup问题无间接关系.

# cat messages | grep "SLUB: Unable to allocate memory on node"

Mar  2 18:04:45 ser-node7 kernel: SLUB: Unable to allocate memory on node -1 (gfp=0xd0)
Mar  3 14:54:25 ser-node7 kernel: SLUB: Unable to allocate memory on node -1 (gfp=0xd0)
Mar  3 14:54:25 ser-node7 kernel: SLUB: Unable to allocate memory on node -1 (gfp=0xd0)

此为零碎的已知BUG,具体请参考如下KB:

4.解决方案

百度大手子给的计划如下所示:

  • vi /etc/sysctl.conf
    kernel.watchdog_thresh =30
  • 查看:# tail -1 /proc/sys/kernel/watchdog_thresh
  • 长期失效:# sysctl -w kernel.watchdog_thresh=30
    原厂倡议尚在期待中

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:内核报错kernelNMI-watchdog-BUG-soft-lockup-CPU1

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址