CPU负载高告警问题的定位与优化建议
#作者:猎人
文章目录
- 背景
- 一.问题排查
- 1.1 找到相应的容器
- 1.2 找到对应的deployment
- 1.3 查看pod日志
- 1.4 查看nginx配置文件
- 1.5 查看deployment的yaml文件
- 二.优化建议
背景
Docker 版本:19.03.14
Operating System: Red Hat Enterprise Linux Server 7.9 (Maipo)
内核版本: Linux 5.12.9-1.el7.elrepo.x86_64
内存:252G
CPU逻辑核心数:30
问题:k8s集群一个节点192.x.x.x CPU负载高告警
原因:某省生产核心业务nginx 容器内存限制过低导致nginx进程在重启。
解决简介:
- 登陆某省生产核心业务节点192.x.x.x节点, 用top命令查看,发现CPU前一分钟,5分钟,15分钟负载高。
- 通过top 输出结果看到最前面的是nginx进程,但此节点宿主机上没有部署二进制的NGINX,因此怀疑这个进程是以容器的形式运行的。
- 通过遍历该节点上所有的容器,找到容器的PID和上面nginx一样的pid,输出容器的名称
- 根据容器的名称的前面的一部分,通过在master节点过滤,找到对应的deployment.
- 根据deployment的pod的日志和yaml文件,找到问题原因。
一.问题排查
登陆到CPU负载高的节点192.x.x.x,通过top命令查看:

查看到大多数都是nginx占用的CPU资源。

当前节点的CPU是30核心:

通常对于CPU单核心的负载,超过0.8就认为负载很高了,因此对于30核心的CPU,30*0.8=24 ,超过24就负载很高了,而通过上面的top命令我们看到前1,5,15分钟负载都超过了50了,因此,情况特别严重,需要排查定位。
1.1 找到相应的容器
在宿主机上没有找到二进制部署的nginx ,因此我们怀疑是这个NGINX进程应该是以容器的形式启动的。
通过命令遍历节点上的所有的容器:
docker ps -a -q |xargs docker inspect -f "{{.State.Pid}} {{.Config.Hostname}} {{.Id}} " |grep 59295

找到容器的名称为: xtag-ui-7df9c4d5f7-lcfsq
通过在节点192.195.5.179上执行: dmesg |grep nginx


也看到好多关于nginx的信息,报 Memory cgroup out of memory: Killed process 497 (nginx) total-vm:108656kB, anon-rss:31816kB, file-rss:1848kB, shmem-rss:0kB, UID:18345 pgtables:228kB oom_score_adj:999
[33114127.374677] oom_reaper: reaped process 497 (nginx), now anon-rss:0kB, file-rss:0kB, shmem-rss:4kB
[33114127.379830] Memory cgroup out of memory: Killed process 500 (nginx) total-vm:108656kB, anon-rss:31644kB, file-rss:1588kB, shmem-rss:0kB, UID:18345 pgtables:228kB oom_score_adj:999
[33114127.386208] oom_reaper: reaped process 500 (nginx), now anon-rss:0kB, file-rss:0kB, shmem-rss:4kB
[33114127.392363] Memory cgroup out of memory: Killed process 503 (nginx) total-vm:108656kB, anon-rss:31712kB, file-rss:1588kB, shmem-rss:0kB, UID:18345 pgtables:228kB oom_score_adj:999
可以看到NGINX 内存溢出,不断的杀掉进程,启动新的进程,这样频繁不断的杀掉老的进程,启动新的进程,将会导致CPU的负载飙升。
1.2 找到对应的deployment
通过在master节点上:
kubectl get pod -A -o wide|grep xtag

1.3 查看pod日志
查看pod日志有报错:

1.4 查看nginx配置文件
进入容器里面查看NGINX的配置文件,线程数和CPU核心数一样多:worker_connections 65535;

1.5 查看deployment的yaml文件
查看deployment的 yaml 文件:
内存最大限制为512M:

把内存修改为4G后,新的pod调度到其他节点上,调度到新节点的CPU负载正常。原来所在的节点CPU负载也降了下来,一切恢复正常。
二.优化建议
- NGINX的内存不能给的太少,内存太少,会导致内存溢出,导致CPU负载高
- 查看NGINX的配置文件,线程数和CPU核心数一样,导致对主机CPU的负载高,建议增加对CPU的限制。
相关文章:
CPU负载高告警问题的定位与优化建议
#作者:猎人 文章目录 背景一.问题排查1.1 找到相应的容器1.2 找到对应的deployment1.3 查看pod日志1.4 查看nginx配置文件1.5 查看deployment的yaml文件 二.优化建议 背景 Docker 版本:19.03.14 Operating System: Red Hat Ent…...
2月28日,三极管测量,水利-51单片机
众所周知,三极管(BJT)有三个管脚,基极(B)、集电极(C)、发射极(E),在实际应用中,不可避免地会遇到引脚辨别的问题。接下来就讲下三极管…...
批量提取 Word 文档中的图片
在 Word 文档中,我们可以插入图片、文本、链接等各种各样的资源。在某些场景下我们需要提取这些信息,比如我们需要提取 Word 文档中的图片,将每一个 Word 文档中的图片都提取出来放到一个单独的文件夹中,那么我们应该怎么做呢&…...
C#—Settings配置详解
C#—Settings配置详解 在C#项目中,全局配置通常指的是应用程序的设置(settings),这些设置可以跨多个类或组件使用,并且通常用于存储应用程序的配置信息,如数据库连接字符串、用户偏好设置等。 Settings配置…...
UI自动化框架介绍
selenium Pytest Allure 优势 1.1 更高效的自动化测试 Selenium 提供了强大的浏览器自动化能力,可以模拟用户与网页的交互。它能够在不同浏览器上运行测试,确保 Web 应用程序在多种环境下的兼容性。Pytest 是一个非常灵活、简洁的 Python 测试框架&a…...
【工具推荐】在线提取PDF、文档、图片、论文中的公式
网址1:https://simpletex.cn/ai/latex_ocr 网址2: https://www.latexlive.com/home 推荐理由:无需下载,在线使用,直接 截图 CTRLV 效果更佳。...
帮我设计一个c语言学习阶段
以下是一个针对不同学习阶段的C语言学习计划,你可以根据自己的基础和目标进行调整: 第一阶段:基础语法与程序结构(第1-4周) 目标 熟悉C语言的基本语法和程序结构。 能够编写简单的程序。 学习内容 环境搭建 安装…...
解决windows npm无法下载electron包的问题
1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...
网络编程 day01
网络编程 day01 0. 网络编程课程介绍1. 认识网络1.网络发展史2.局域网与广域网局域网(LAN)广域网(Wan) 3.光猫4.路由器5.交换机与路由器6.网线 2. IP1. 基本概念2. 网络号/主机号(二级划分)3. IP地址分类整…...
【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】
去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…...
2915. 和为目标值的最长子序列的长度
给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。 返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。 子序列 指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来…...
谷仓的安保
Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛安排一个有效的密码。一个有效的密码由L(3 < L < 15)个小写字母(来自传统的拉丁字母集a...z)组成,至少有一个元音(a, e, i, o, 或者 u),至少两个辅音(除去元音以外…...
vcredist_x64 资源文件分享
vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本,用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接:https://pan.quark.cn/s/ef56f838f…...
MySQL零基础教程14—子查询
子查询比较简单,我们还是通过案例引入。 有时候我们查询的时候,需要用到的不止一个表的数据,比如下面的场景: 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下: 从三张表的结构,我们不难…...
使用mermaid查看cursor程序生成的流程图
一、得到cursor生成的流程图文本 cursor写的程序正常运行后,在对话框输入框中输入诸如“请生成扫雷的代码流程图”,然后cursor就把流程图给生成了,但是看到的还是文本的样子,保留这部分内容待用 二、注册一个Mermaid绘图账号 …...
L1-031 到底是不是太胖了
L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集 (pintia.cn) 解题思路 输入数据 首先从输入中读取正整数 n,表示要处理的人数。 然后通过循环 n 次,每次读取一个人的身高 h(单位:厘米)和实际体重 w࿰…...
服务器时间同步
[rootbogon hwh-ansible]# cat time-sync.sh #!/bin/bash # NTP 服务器信息 NTP_SERVER"192.168.42.12" PASSWORD"123456" # 多个 IP 地址 HOSTS("192.168.42.8" "192.168.42.9" "192.168.42.10" "192.168.42.11"…...
01. HarmonyOS应用开发实践与技术解析
文章目录 前言项目概述HarmonyOS应用架构项目结构Ability生命周期 ArkTS语言特性装饰器状态管理 UI组件与布局基础组件响应式布局样式与主题 页面路由与参数传递页面跳转参数接收 数据绑定与循环渲染数据接口定义循环渲染 条件渲染组件生命周期最佳实践与性能优化组件复用响应式…...
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 文章目录 **01 自动作诗缘起****1. 诗歌自动写作** **02 九歌的模型…...
JS基础之函数
函数使用 函数名命名规范 和变量命名基本一致> 尽量小驼峰式命名法 前缀应该为动词 命名建议:常用动词约定 动词含义can判断是否可执行某个动作has判断是否含义某个值is判断是否为某个值get获取某个值set设置某个值load加载某些数据 有返回值的函数 细节: 在函数体中使用…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
