解决kubernetes宿主机top cpu wa io过高引起的cpu资源耗尽问题

Linux性能排查实战:CPU与内存问题从定位到解决的完整思路 在Linux系统运维中,CPU使用率与平均负载常被混为一谈,内存的buff/cache回收机制也容易引发误解。理解这些基础概念是性能调优的前提:负载代表等待调度的任务数量,需结合核数判断是否过载;available才是衡量可用内存的真实指标,内核会在需要时自动回收缓存。掌握top、vmstat、sar等工具,可以从系统整体水位出发,逐层定位到进程乃至线程级别,快速锁死CPU飙升、内存泄漏、IO等待等问题的根因。本文梳理了一套完整的排查链路,涵盖负载解读、CPU状态字段分析、内存机制解析、swap与OOM处理 阅读详情

环境

  1. cat /etc/redhat-release

    CentOS Linux release 7.4.1708 (Core) 
  2. sudo docker version

    Client:
     Version:      17.10.0-ce
     API version:  1.33
     Go version:   go1.8.3
     Git commit:   f4ffd25
     Built:        Tue Oct 17 19:04:05 2017
     OS/Arch:      linux/amd64
    
    Server:
     Version:      17.10.0-ce
     API version:  1.33 (minimum version 1.12)
     Go version:   go1.8.3
     Git commit:   f4ffd25
     Built:        Tue Oct 17 19:05:38 2017
     OS/Arch:      linux/amd64
     Experimental: false
    
  3. kubectl version

    Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-11T23:16:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

问题

宿主机cpu占用率非常高,cpu处于资源几近耗尽状态.使用top命令,显示cpu的使用情况是超过80%的cpu占用在wa(IO等待占用CPU的百分比)上,用户空间(us)和内核空间(sy)占用不到20%.id显示的剩余量几近为0.load average也显示较高,如下:

    op - 17:29:08 up 10 days, 19:20,  1 user,  load average: 14.31, 9.34, 9.08
    Tasks: 351 total,   1 running, 350 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  6.9 us,  7.7 sy,  0.3 ni,  2.9 id, 81.7 wa,  0.0 hi,  0.5 si,  0.0 st
    KiB Mem :  8010196 total,   735612 free,  5450964 used,  1823620 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  1636516 avail Mem 

排查问题

这个问题在前一段时间也出现过,但最终两次产生的原因不同,上次出现此问题的原因是因为pv挂载的阿里云nfs,刚好宿主机上被调度了es(elasticsearch),然后es交换nfs数据量太大,导致了连接nfs的网络io太大.而这一次的问题是由于磁盘IO引起的.

  1. 使用iotop命令查看机器io情况

        Total DISK READ :       9.79 M/s | Total DISK WRITE :      24.66 K/s
        Actual DISK READ:       8.21 M/s | Actual DISK WRITE:       0.00 B/s
          TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                      
         5762 be/7 root     1743.49 K/s    0.00 B/s  0.00 % 95.26 % du -s /var/lib/docker/overlay/e~61f203cd85d130b629268078be9c07f4
         5721 be/7 root      750.23 K/s    0.00 B/s  0.00 % 94.64 % du -s /var/lib/docker/overlay/c~dd81ce0684eed62e983301a2bd67e694
           41 be/4 root        0.00 B/s    0.00 B/s  0.00 % 52.87 % [kswapd0]
         5758 be/7 root      200.77 K/s    0.00 B/s  0.00 % 34.72 % du -s /
CPU仅15%接口延迟却飙到3s?从线程到容器全面排查等待瓶颈 在服务性能排查中,CPU利用率低并不代表系统健康,请求可能不是在计算,而是卡在了锁等待、数据库连接、网络重传或磁盘IO等环节。理解CPU指标的细分维度(us/sy/wa/st)和负载含义,是快速定位延迟飙升的第一步。通过线程转储分析线程状态、检查连接池与慢查询、观察TCP重传与软中断、评估磁盘IO与Swap,并结合虚拟化层的CPU steal和容器CPU Limit限制,能系统性地找出隐藏的排队瓶颈。这种排查方法适用于高并发接口调优、线上故障应急响应以及容量评估等场景。本文以实际线上故障为线索,提供了一套从 阅读详情

相关推荐

Linux 性能优化实战:CPU / 内存 / IO / 网络全链路调优,线上可直接落地

本文为 Linux 线上服务器性能优化实战,从 CPU、内存、IO、网络四个维度讲解瓶颈定位方法,配套 top、vmstat、iostat、tcpdump 等工具实操,附带可直接上线的内核调优参数,适合运维工程师排查高并发服务器卡顿、负载高、延迟大等问题。

重装2023的博客 318

从CPU利用率到性能瓶颈:深入理解Linux系统CPU时间统计与排查实践

CPU利用率是衡量计算资源使用情况的核心指标,它反映了CPU执行有效指令的时间占比。其计算原理基于操作系统对用户态、内核态及空闲时间的精细统计,通过时钟中断和调度器进行时间片记账。理解CPU利用率的技术价值在于,它能穿透表象,揭示系统真实的负载状况,避免因错误解读导致扩容或调优失误。在实际应用场景中,高CPU利用率可能源于计算密集型任务、频繁的系统调用、锁竞争或I/O等待,需要结合上下文切换、负载均衡等指标综合判断。本文通过分析句柄泄露导致软中断(softirq)异常和CPU空转的典型案例,并结合火焰图等性

weixin_33806300的博客 309

Linux top命令原理与实战:从进程监控到性能调优

top是Linux系统最基础的实时进程监控工具,其核心基于/proc文件系统的内核数据读取,通过计算jiffies差值获取CPU使用率、解析VmRSS统计物理内存占用,体现的是操作系统资源调度的瞬时状态。它不依赖守护进程或网络服务,具备零安装、高兼容、易脚本化等工程优势,在运维诊断、自动化巡检和容器化环境初期排查中不可替代。结合ps、vmstat、iostat可构建三角验证体系,而搭配Prometheus或eBPF则延伸出可观测性新范式。本文深入解析top字段含义、批处理模式(-bn1)用法及常见性能误判场

cqwmy840702的博客 511

深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

返回主目录 返回 图像处理的一些方法 目录 下一章:深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 目录内容 深度篇——图像处理的一些方法(一)关于图像处理的三个层次 与 selective search 深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 深度篇——图像处理的一些方法(三)细说 HOG特征与bag-o...

天下所弃,不过其纪。世间事,在人,在志。 2917

LangGraph的容错机制:从节点失败到图级回滚

核心概念铺垫:讲解LLM应用容错与事务性的核心概念(幂等性、重试策略、降级策略、快照、回滚、原子性、一致性、隔离性、持久性、最终一致性),对比LangGraph容错机制与传统数据库ACID事务、Apache Airflow/Kubernetes Workflow/Kubeflow Pipelines容错机制的异同;LangGraph容错机制的演进历史:用markdown表格梳理LangGraph从0.0.1到1.5.0(截止202X年X月)的容错机制发展历程;节点级别的容错:重试与降级。

AI Python 编程之道的博客 172

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1341

Tessent MBIST SDC

主要是两个PROC,tessent_constrain_${design_name}_mentor_ijtag_non_modal和tessent_constrain_${design_name}_mentor_memory_bist_modal。其中,Memory/MBIST controller/MEM Interface可以从func_clk_1来(用func_clk_1和func_clk_2的高频时钟),如图中红色线。其中,SIB和BAP用ijtag_tck的clock,如图绿色线。

po_poo的博客 1988

华为OD机试真题2025双机位A卷 C语言 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 351

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4784

ESP32-C3蓝牙透传通信的BLE协议栈工程实践

蓝牙低功耗(BLE)透传是一种基于GATT服务模型的数据透明传输机制,其核心原理在于Peripheral设备通过广播建立连接,并在GATT Server层暴露可读写特征值实现双向数据通道。该技术具备低功耗、跨平台兼容性强、开发门槛适中等优势,广泛应用于智能硬件、工业传感器与嵌入式网关等场景。在实际工程中,透传稳定性高度依赖BLE协议栈的分层协同——Link Layer负责可靠连接建立,GATT Server则定义数据交互语义;而ESP32-C3的AT指令集正是对这两层能力的封装调度。本文聚焦BLE透传的关键

weixin_29859471的博客 123

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 浅谈c++面向对象的封装,继承和多态
下一篇: 分布式版本控制系统mercurial hg常用命令
anteoy
博客等级 码龄10年 24粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值