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

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进程在重启。

解决简介

  1. 登陆某省生产核心业务节点192.x.x.x节点, 用top命令查看,发现CPU前一分钟,5分钟,15分钟负载高。
  2. 通过top 输出结果看到最前面的是nginx进程,但此节点宿主机上没有部署二进制的NGINX,因此怀疑这个进程是以容器的形式运行的。
  3. 通过遍历该节点上所有的容器,找到容器的PID和上面nginx一样的pid,输出容器的名称
  4. 根据容器的名称的前面的一部分,通过在master节点过滤,找到对应的deployment.
  5. 根据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负载也降了下来,一切恢复正常。

二.优化建议

  1. NGINX的内存不能给的太少,内存太少,会导致内存溢出,导致CPU负载高
  2. 查看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给谷仓安装了一个新的安全系统&#xff0c;并且要给牛群中的每一个奶牛安排一个有效的密码。一个有效的密码由L(3 < L < 15)个小写字母(来自传统的拉丁字母集a...z)组成&#xff0c;至少有一个元音(a, e, i, o, 或者 u)&#xff0c;至少两个辅音(除去元音以外…...

vcredist_x64 资源文件分享

vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本&#xff0c;用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接&#xff1a;https://pan.quark.cn/s/ef56f838f…...

MySQL零基础教程14—子查询

子查询比较简单&#xff0c;我们还是通过案例引入。 有时候我们查询的时候&#xff0c;需要用到的不止一个表的数据&#xff0c;比如下面的场景&#xff1a; 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下&#xff1a; 从三张表的结构&#xff0c;我们不难…...

使用mermaid查看cursor程序生成的流程图

一、得到cursor生成的流程图文本 cursor写的程序正常运行后&#xff0c;在对话框输入框中输入诸如“请生成扫雷的代码流程图”&#xff0c;然后cursor就把流程图给生成了&#xff0c;但是看到的还是文本的样子&#xff0c;保留这部分内容待用 二、注册一个Mermaid绘图账号 …...

L1-031 到底是不是太胖了

L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集 (pintia.cn) 解题思路 输入数据 首先从输入中读取正整数 n&#xff0c;表示要处理的人数。 然后通过循环 n 次&#xff0c;每次读取一个人的身高 h&#xff08;单位&#xff1a;厘米&#xff09;和实际体重 w&#xff0…...

服务器时间同步

[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实践】清华&#xff1a;清华古典诗歌自动生成系统“九歌”的算法 &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 文章目录 **01 自动作诗缘起****1. 诗歌自动写作** **02 九歌的模型…...

JS基础之函数

函数使用 函数名命名规范 和变量命名基本一致> 尽量小驼峰式命名法 前缀应该为动词 命名建议:常用动词约定 动词含义can判断是否可执行某个动作has判断是否含义某个值is判断是否为某个值get获取某个值set设置某个值load加载某些数据 有返回值的函数 细节: 在函数体中使用…...

pyqt 风格

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 样式模块 定义全局样式表和动态样式生成 """from typing import Dictclass StyleManager:"""样式管理器"""# 颜色常量COLORS {bg_dark: #0F172A,bg_medium:…...

选错bpp,你的App内存就炸了?聊聊图像格式、内存与性能的实战权衡

选错bpp&#xff0c;你的App内存就炸了&#xff1f;聊聊图像格式、内存与性能的实战权衡 在移动应用开发中&#xff0c;图像处理往往是性能瓶颈的重灾区。我曾见过一个社交类App因为图片加载策略不当&#xff0c;在低端设备上频繁触发OOM&#xff08;内存溢出&#xff09;崩溃。…...

多智能体系统的最大难题:不是推理,而是协同

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…...

OpCore-Simplify:10分钟搞定黑苹果配置,告别3天手动调试的智能神器

OpCore-Simplify&#xff1a;10分钟搞定黑苹果配置&#xff0c;告别3天手动调试的智能神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂…...

万店精灵上货软件引领电商时代

万店精灵上货软件&#xff1a;http://www.wandianjingling.com/q/r/FV02331&#xff0c;1688&#xff0c;淘宝&#xff0c;抖音&#xff0c;拼多多&#xff0c;微信小店&#xff0c;京东&#xff0c;天猫&#xff0c;快手 都可以上国外&#xff1a;TikTok Shop、Temu、Shopee2&…...

Python核心基础

本文摘要&#xff1a;Python核心基础章节系统讲解了编程基础知识&#xff0c;主要包括&#xff1a;1.字面量的概念与写法&#xff0c;强调字符串必须使用引号包裹&#xff1b;2.变量与常量的定义与使用&#xff0c;介绍命名规则和三种命名风格&#xff1b;3.注释的两种形式&…...

别再死记硬背真值表了!用C++和Verilog代码实战,5分钟搞懂所有逻辑门

用代码实战解锁逻辑门&#xff1a;从C到Verilog的沉浸式学习 第一次接触数字逻辑时&#xff0c;那些密密麻麻的真值表总让人望而生畏。与其机械记忆&#xff0c;不如打开代码编辑器&#xff0c;让程序运行结果告诉你逻辑门的秘密。本文将带你用两种语言&#xff08;C和Verilog&…...

企业微信 Webhook 回调详解

Webhook 回调&#xff0c;是企业微信自动化开发中最核心的能力之一。很多开发者在做企业微信自动化时&#xff0c;都会先关注“消息发送”。 但真正影响系统自动化能力的&#xff0c;其实是“消息回调”。因为只有实时接收到客户消息、群消息与事件通知&#xff0c;系统才能真正…...

口碑最好的AI论文工具推荐(从文献整理到论文成稿全流程)适合全体毕业生

论文选题没思路、文献检索耗时长、开题报告写不出、初稿逻辑混乱、查重反复修改、答辩PPT难打磨&#xff1f;面对论文写作的重重难关&#xff0c;作为学术新手、应届生或本科硕士毕业生&#xff0c;你是否也感到力不从心&#xff1f;论文流程复杂、环节繁多、上手门槛高&#x…...

终极指南:在Debian/Ubuntu系统上快速配置DisplayLink多屏扩展驱动

终极指南&#xff1a;在Debian/Ubuntu系统上快速配置DisplayLink多屏扩展驱动 【免费下载链接】displaylink-debian DisplayLink driver installer for Debian and Ubuntu based Linux distributions. 项目地址: https://gitcode.com/gh_mirrors/di/displaylink-debian …...