Load高,CPU idle很高,这情况太诡异了

Load很高,CPU使用率很低的诡异情况

第一次碰到这种Case:物理机的Load很高,CPU使用率很低

先看CPU、Load情况

如图一:
vmstat显示很有多任务等待排队执行(r)top都能看到Load很高,但是CPU idle 95%以上

这个现象不太合乎常规,也许是在等磁盘IO、也许在等网络返回会导致CPU利用率很低而Load很高

贴个vmstat 说明文档(图片来源于网络N年了,找不到出处)

检查磁盘状态,很正常(vmstat 第二列也一直为0)

再看Load是在5号下午15:50突然飙起来的:

同一时间段的网络流量、TCP连接相关数据很平稳:

所以分析到此,可以得出:Load高跟磁盘、网络、压力都没啥关系

物理机上是跑的Docker,分析了一下CPUSet情况:

发现基本上所有容器都绑定在CPU1上(感谢 @辺客 发现这个问题)

进而检查top每个核的状态,果然CPU1 的idle一直为0

看到这里大致明白了,虽然CPU整体很闲但是因为很多进程都绑定在CPU1上,导致CPU1上排队很长,看前面tsar的--load负载截图的 等待运行进程排队长度(runq)确实也很长。

物理机有32个核,如果100个任务同时进来,Load大概是3,这是正常的。如果这100个任务都跑在CPU1上,Load还是3(因为Load是所有核的平均值)。但是如果有源源不断的100个任务进来,前面100个还没完后面又来了100个,这个时候CPU1前面队列很长,其它31个核没事做,这个时候整体Load就是6了,时间一长很快Load就能到几百。

这是典型的瓶颈导致积压进而高Load。

为什么会出现这种情况

检查Docker系统日志,发现同一时间点所有物理机同时批量执行docker update 把几百个容器都绑定到CPU1上,导致这个核忙死了,其它核闲得要死(所以看到整体CPU不忙,最忙的那个核被平均掩盖掉了),但是Load高(CPU1上排队太长,即使平均到32个核,这个队列还是长,这就是瓶颈啊)。

如下Docker日志,Load飙升的那个时间点有人批量调docker update 把所有容器都绑定到CPU1上:

检查Docker集群Swarm的日志,发现Swarm没有发起这样的update操作,似乎是每个Docker Daemon自己的行为,谁触发了这个CPU的绑定过程的原因还没找到,求指点。

手动执行docker update, 把容器打散到不同的cpu核上,恢复正常:

总结

  • 技术拓展商业边界,同样技能、熟练能力能拓展解决问题的能力。 开始我注意到了Swarm集群显示的CPU绑定过多,同时也发现有些容器绑定在CPU1上。所以我尝试通过API: GET /containers/json 拿到了所有容器的参数,然后搜索里面的CPUSet,结果这个API返回来的参数不包含CPUSet,那我只能挨个 GET /containers/id/json, 要写个循环,偷懒没写,所以没发现这个问题。
  • 这种多个进程绑定到同一个核然后导致Load过高的情况确实很少见,也算是个教训
  • 自己观察top 单核的时候不够仔细,只是看到CPU1 的US 60%,没留意idle,同时以为这个60%就是偶尔一个进程在跑,耐心不够(主要也是没意识到这种极端情况,疏忽了)
时间: 2024-09-30 09:00:51

Load高,CPU idle很高,这情况太诡异了的相关文章

cpu-mysql锁表会导致CPU占用很高么,求答案,。。。。。。。。

问题描述 mysql锁表会导致CPU占用很高么,求答案,........ 今天发布的项目锁表了,导致后面CPU超高,是锁表的原因么...... 解决方案 你这样子问,很难回答,只能说有可能

vps上的wordpress系统的mysql的cpu占用很高怎么解决

问题描述 vps上的wordpress系统的mysql的cpu占用很高怎么解决 使用show full processlist;语句,一直显示下面的语句在运行, SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.post_date DESC LI

电脑CPU温度过高 cpu使用率较高怎么办

cpu使用率高是网民经常遇到的问题,CPU使用率高其实就是你运行的程序占用的CPU资源,说明你的机器在这个时间上运行了很多程序.长期使用会让CPU长时间处于高热状态会对影响cpu寿命产生点影响,CPU使用率过高怎么办呢? cpu使用率高的原因和解决办法: 一.电脑正在运行大型的应用程序,例如大型的处理软件.3D网络游戏等等1.退出当前大型程序,等待cpu使用率恢复正常. 2.查看电脑配置是否满足运行该程序的最低配置,如果确实是电脑配置不行的话,那么就建议网友将电脑硬件进行升级了. 3.如果是软件

httpd.exe cpu占有很高的解决方法_应用技巧

这几天回家后重装了下系统,但突然发现经常用的套装apmserv中的httpd.exe占cpu资源100%. 在网上查了很找时间也没找到合适的解决方法. 于是自己组建php环境,但是开启apach后,apach.exe占用资源是100%. 通过在网上查找apach 100% 发现一个网站提示可能是和应用程序相充突. 于是重装系统,运行apmserv正常. 开始排除. 最终发现装上盗版的防火墙,有问题.删除掉后重启.apmserv中httpd.exe正常.

解决linux中Kipmi0进程对CPU使用率很高问题

google查不到多少资料,看到一篇说法:是一些平台接口的管理器.不敢贸然杀死,再查查资料. 看看专业的说法: kipmi is supposed to run with low priority. When you say it consumes 70-90% of the CPUs, is that constant (does it still consume the processor when they are other tasks in the process queue that

cpu占用过高导致电脑很卡或无响应怎么办

  要解决CPU使用率过高,首先我们要明白CPU过高是什么原因造成的,我们主要从软件与硬件入手: 1.软件方面导致的CPU使用率高 这方面主要涉及到的是系统问题,比如系统过于臃肿,开启过多程序以及电脑中病毒木马等等都会产生CPU使用率过高,而导致电脑速度慢.解决办法主要是围绕系统优化,优化开机启动项.尽量避免开启太多程序等等,以下我们会详细介绍. 2.硬件方面导致的CPU使用率高 其实硬件方面决定着比较大的关系,比如如果电脑还是老爷机,采用最初的单核赛扬级处理器,那么这样的电脑,在多开启几个网页

Java(TM) Platform SE binary cpu占用过高是什么情况?

问题描述 学习到多线程了,我把程序贴上来,packagebase;publicclassThreadDemo_4{publicstaticvoidmain(String[]args){TestThread_4t=newTestThread_4();newThread(t).start();newThread(t).start();newThread(t).start();newThread(t).start();}}classTestThread_4implementsRunnable{priv

CentOS7.2(RHEL 7.2)的CPU占用高(%system 占用高)

开机后,发现节点1的CPU使用率很高: [root@lunar1 ~]# sar -u 1 10 Linux 3.10.0-327.el7.x86_64 (lunar1.oracle.com)         03/22/2016      _x86_64_        (2 CPU)   06:16:57 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle 06:16:58 PM     all    

Win7电脑CPU占用过高怎么办?

随着电脑文档越来越多,电脑也越来越卡,有时候玩游戏都卡的要死.有用户在使用Win7系统的时候,运行非常卡,随后发现是CPU使用了过高所致,那么是什么原因导致CPU使用率过高呢?有没有什么办法可以降低CPU使用率,下面小编就给大家介绍下Win7电脑CPU占用过高的解决方法. 要解决CPU使用率过高,首先我们要明白CPU过高是什么原因造成的,我们主要从软件与硬件入手: 原因 1.软件方面导致的CPU使用率高 这方面主要涉及到的是系统问题,比如系统过于臃肿,开启过多程序以及电脑中病毒木马等等都会产生C