当前位置: 首页 > news >正文

K8S集群节点负载无故飙升:CPU软死锁解决方案

本次分享一个CPU软锁死的问题。这个问题致使我们公司K8S集群一个节点被锁死,负载不断飙升,整个集群也被拖死,导致重要业务受影响,现在来回顾一下整个过程。

1 事件现象

1、用户发现系统无法登入后反馈运维,运维检查情况并定位到是k8s集群问题。 2、进入服务器后无法对K8S集群进行操作 3、查看K8S集群第三个节点负载较高

2 引起原因

通过查看日志,K8S集群的第三个节点服务器存在BUG,导致它无法正常执行操作,陷入死循环。负载持续增高,导致K8S集群崩溃。

为了解决这个问题,百度了一下,总结了以下几种原因:

驱动程序错误:某些硬件驱动程序可能含有缺陷,导致CPU在执行特定操作时陷入死循环。 硬件故障:硬件问题,如过热或电源不稳定,也可能导致CPU响应缓慢或卡死。 内核bug:Linux内核本身的bug可能会在特定情况下触发软锁定。

3 解决方案

3.1 临时解决:强制重启服务器

由于我们是云服务器,我在服务器使用reboot没有释放负载,于是在云平台直接强制重启才释放。

3.2 彻底解决:调整内核参数

CentOS内核,对应的文件是/proc/sys/kernel/watchdog_thresh。

(1)将 watchlog_thresh 临时设置为 30

sysctl -w kernel.watchdog_thresh=30

(2)将 watchlog_thresh 永久设置为 30

echo 30>/proc/sys/kernel/watchdog_thresh

(3)将 watchlog_thresh 写入启动文件

kernel.watchdog_thresh=30>> /etc/sysctl.conf

重要说明:

在centos6(2.6内核)中:

softlockup_thresh的值等于内核参kernel.watchdog_thresh,默认60秒;

在centos7(3.10内核)中:

内核参数kernel.watchdog_thresh名称未变,但含义变成了hard lockup threshold,默认10秒;

soft lockup threshold则等于(2*kernel.watchdog_thresh),默认20秒;

3.10内核中 高精度计时器(hrtimer),也就是kernel/watchdog.c: watchdog_timer_fn() 的周期是:softlockup_thresh/5 ,默认4s

如果超过了soft lockup threshold(20s)未更新, 那么就会发生soft lockup

相关文章:

  • 公关公司和广告公司的区别北京seo实战培训班
  • 网站开发微盘市场营销主要学什么
  • 廊坊哪些公司做网站杭州seo的优化
  • 注册国外网站用什么邮箱北京seo优化哪家公司好
  • 漂亮公司网站源码打包下载seo在线推广
  • visual studio怎么做网页杭州企业seo
  • 进程间通讯(IPC)
  • 【Pandas】pandas DataFrame infer_objects
  • GZ036区块链卷一 EtherStore合约漏洞详解
  • AI重构SEO关键词精准布局
  • 【Guava】并发编程ListenableFutureService
  • Openlayers:海量图形渲染之WebGL渲染
  • npm报错 npm ERR! Error while executing:npm ERR! ,npm 启动以及安装过程的各种报错
  • Linux网络基本命令及相关配置
  • flask返回json或者中文字符串不要编码
  • Spring Cloud LoadBalancer负载均衡+算法切换
  • c++中同步和异步,阻塞和非阻塞原理以及机制
  • 【KWDB 创作者计划】_从底层技术到应用实战:KWDB 系列文章总览
  • 0. 七小时挑战:自研企业级任务调度器--前言
  • Python爬虫第7节-requests库的高级用法
  • 【学习自用】配置文件中的配置项
  • LVGLBuilder 详解:用声明式语法构建嵌入式GUI的高效之道
  • LeetCode406☞根据身高重建队列
  • DDoS防护:从基础认知到实战防御的全方位指南
  • Jmeter 插件【性能测试监控搭建】
  • c语言练习一