诡异的linux系统负载问题

CPU的系统负载通常指的是CPU在处理任务时的繁忙程度,它反映了CPU正在执行或等待执行的任务数量。系统负载可以通过多种方式来衡量,其中最常见的是使用系统负载平均值(Load Average)来表示。

可移至linux系统负载对系统的意义

如果你从网上查询如何分析系统负载,大概率可以查到两大类系统负载高的问题。

  1. CPU使用率高,iowait不高,系统负载高
  2. CPU使用率高,iowait高,系统负载高

这两大类问题,实际都是比较简单的类型。因为CPU使用率高,那就可以查询到哪个进程占用CPU高,那基本就定位到了问题所在。

而我很不幸遇到了第三种情况,即CPU使用率不高、iowait也不高,就只有系统负载高。

分析流程

分析问题时,还是按照常规流程进行的。

发现系统负载高后

  1. top(或sar -u 1)查看问题期间cpu使用率的情况

获取cpu使用率的情况后,发现,cpu的总体使用率很低,空闲80%以上,user、sys、iowait均为个位数。

  1. free查看是否有swap使用的情况

发现有swap使用的情况,怀疑是因为swap使用磁盘了,导致交互变慢。所以先从这里入手,把swap关了(swapoff -a)。结果依然感人,系统负载并没有下降。

  1. 火焰图

前两步没找到原因,那就使用大杀器试试。使用perf命令抓取火焰图,发现有1/3的时间系统都在处理file lock,但是只能看到pid,所以也不知道是谁在占用file lock。

  1. 进程数量

重新退回到top(或ps)分析,发现总的进程数量并没有什么异常,跟正常节点之间差距只有200个进程左右。

  1. 队列个数

使用sar -q 1查看系统负载情况,发现plist(进程队列大小)个数竟然有17w+。

  1. 线程数量

既然进程数对不上,那就看看线程数,使用ps -eLf查看进程及线程关系,发现有一个进程竟然有10w+的线程数。

结论

基于上述的分析,推导出来的结论:进程创建了10w+的线程,并且出现了类似死锁的问题,导致大量线程等锁,从而导致了系统负载的飙升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微信小程序调用百度API实现图像识别实战】-前后端加强版

前言:基于前面两篇图像识别项目实战文章进行了改造升级。 第一篇 入门【微信小程序调用百度API实现图像识别功能】----项目实战 第二篇 前后端结合 【微信小程序调用百度API实现图像识别实战】----前后端分离 这一篇主要讲述的是在第二篇的基础上新增意见反馈功能&a…

ZooKeeper 搭建详细步骤之一(单机模式)

搭建模式简述 ZooKeeper 的搭建模式包括单机模式、集群模式和伪集群模式,分别适用于不同的场景和需求,从简单的单节点测试环境到复杂的多节点高可用生产环境。在实际部署时,应根据系统的可用性要求、数据量、并发负载等因素选择合适的部署模式…

mysql UNION 联合查询

mysql UNION 联合查询 业务需要拉数据,这里需要对查询不同格式的数据进行组装,此处采用联合查询 注意1:null as 设备关爱 ,结果为null,表头为设备关爱 注意2: UNION 或者 UNION ALL 联合查询自行选用 注意3…

新开的拼多多店铺怎么运营

今天给大家分享一下如何在拼多多平台上开设并运营一家店铺。不管你是创业者还是小型商家,相信这个话题都会对你有所帮助。 拼多多新店需要做些推广提高店铺权重 新店用3an推客做推广比较好 3an推客是给商家提供的营销工具,3an推客CPS推广模式由商家自主…

Int4:Lucene 中的更多标量量化

作者:来自 Elastic Benjamin Trent, Thomas Veasey 在 Lucene 中引入 Int4 量化 在之前的博客中,我们全面介绍了 Lucene 中标量量化的实现。 我们还探索了两种具体的量化优化。 现在我们遇到了一个问题:int4 量化在 Lucene 中是如何工作的以…

(七)Servlet教程——Idea编辑器集成Tomcat

1. 点击桌面上Idea快捷方式打开Idea编辑器,假如没有创建项目的话打开Idea编辑器后的界面展示如下图所示 2. 点击界面左侧菜单中的自定义 3. 然后点击界面中的“所有设置...”,然后点击“构建、执行、部署”,选择其中的“应用程序服务器” 4. 点击“”按钮…

每日OJ题_DFS回溯剪枝⑦_力扣77. 组合

目录 力扣77. 组合 解析代码 力扣77. 组合 77. 组合 难度 中等 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,…

数据结构与算法(Java版) | 详解十大经典排序算法之一:插入排序

接下来,我来给大家讲解第三种排序算法,即插入排序。 基本介绍 首先,我们来看下插入排序的基本介绍。 插入排序,其属内部排序法,是对于欲排序的元素以插入的方式来找寻该元素的适当位置,以便最终达到排序…

基于Springboot的考研资讯平台

基于SpringbootVue的考研资讯平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 考研资讯 报考指南 资料信息 论坛信息 后台登录 考研资讯管理 学生管理 资…

Python数据分析实验二:Python数据预处理

目录 一、实验目的与要求二、实验任务三、主要程序清单和运行结果(一)对chipotle.csv文件的销售数据进行分析(二)对描述泰坦尼克号成员的信息进行可视化和相关分析 四、实验体会 一、实验目的与要求 1、目的:   掌握…

分布式与一致性协议之Paxos算法(二)

Paxos算法 如何达成共识 想象这样一个场景,某地出现突发事件,当地村委会、负责人等在积极研究和搜集解决该事件的解决方案,你也决定参与其中,提交提案,建议一些解决方法。为了和其他村民的提案做区分,你的…

eclipse 如何创建python文件

一、准备 1.平台要求: 电脑除了要安装eclipse软件和Python语言包之外,还需要将Python集成到eclipse软件中,网上有很多的方法,这里就不细细介绍如何集成了。 在下面界面中可以看到自己已经安装了继承插件。具体方法见步骤2&…

构建数字化银行:现代化总架构探究

随着科技的迅速发展和用户需求的不断变化,传统银行业正迎来一场数字化转型的浪潮。在这个数字化时代,银行需要构建现代化的总架构,以适应快速变化的市场环境和客户需求。本文将深入探讨数字化银行的总架构设计理念、关键技术以及实践经验&…

PotatoPie 4.0 实验教程(29) —— FPGA实现摄像头图像均值滤波处理

图像的均值滤波简介 图像均值滤波处理是一种常见的图像处理技术,用于降低图像中噪声的影响并平滑图像。该方法通过在图像中滑动一个固定大小的窗口(通常是一个正方形或矩形),将窗口中所有像素的值取平均来计算窗口中心像素的新值…

26.统一网关Gateway

网关的功能 1.身份认证,权限的校验。 2.服务的路由,负载均衡。用户请求被分配到哪一个微服务。一个微服务可以有多个实例,所以使用负载均衡。 3.请求限流。 springcloud网关实现有两种:gateway, zuul zuul是基于servlet实现的…

Vitis HLS 学习笔记--IDE软件高效操作指引

目录 1. 简介 2. 实用软件操作 2.1 C/RTL Cosimulation 选项 2.2 Do not show this dialog again 2.3 New Solution 2.4 对比 Solution 2.5 以命令行方式运行(windows) 2.6 文本缩放快捷键 2.7 查看和修改快捷键 2.8 将Vitis HLS RTL 导入 Viv…

YouTubeDNN模型

Deep Neural Networks for YouTube Recommendations YouTubeDNN模型是2016年的一篇文章,这篇文章给出了很多优化推荐系统中的工程性经验和trick,比如召回方面的"example age", “负采样”,“非对称消费,防止泄露”&…

MySQL/MariaDB 如何查看当前的用户

MySQL 的所有数据库用户信息是存储在 user 数据表中的。 可以在登录成功数据后运行 SQL: MariaDB [(none)]> select user,host from user;就可以查看到数据中的所有用户信息。 MariaDB [(none)]> select user,host from user; ERROR 1046 (3D000): No databa…

ReactJS中使用TypeScript

TypeScript TypeScript 实际上就是具有强类型的 JavaScript,可以对类型进行强校验,好处是代码阅读起来比较清晰,代码类型出现问题时,在编译时就可以发现,而不会在运行时由于类型的错误而导致报错。但是,从…

OpenHarmony实战开发-如何实现自定义绘制 (XComponent)

XComponent组件作为一种绘制组件,通常用于满足开发者较为复杂的自定义绘制需求,例如相机预览流的显示和游戏画面的绘制。 其可通过指定其type字段来实现不同的功能,主要有两个“surface”和“component”字段可供选择。 对于“surface”类型…
最新文章