答案1
情况
在系统日志(/var/log/messages 或 journalctl)中打印了许多以下消息。
May 25 07:23:59 XXXXXXX kernel: [13445315.881356] BUG: soft lockup - CPU#16 stuck for 23s! [yyyyyyy:81602]
随后是各种堆栈跟踪。本文档尝试解释软锁定消息的含义。
错误消息本身并没有告诉您问题的原因。
原因
“软锁定”是指导致内核在内核模式下循环超过 20 秒,而没有给其他任务运行机会的错误。看门狗守护程序将向系统中的所有 CPU 发送不可屏蔽中断 (NMI),然后这些 CPU 会打印当前正在运行的任务的堆栈跟踪。
减少服务器负载是正常的解决方案:
解决
在正常情况下,如果负载减少,这些消息可能会消失。如果内核很忙,处理大量需要扫描、释放或分配的对象,则可能会发生这种“软锁定”。这些任务的堆栈跟踪可以初步了解任务正在做什么。但是,为了能够检查消息背后的原因,需要进行内核转储。
您无法禁用这些消息,但是在某些情况下,增加触发这些软锁定的时间来缓解这种情况。
这样做只需增加以下
sysctl
参数:kernel.watchdog_thresh
此参数的默认值是10
,将该值加倍可能是个好的开始。