linux+性能排查,Linux系统性能排查基础

2023-11-04

此文已由作者李晶授权网易云社区发布。

欢迎访问

上一期运维季刊中,我们重点从CPU方面分析了Linux系统性能瓶颈,除了CPU之外,内存、IO和网络也是常见的造成系统出现问题的根源,本篇我们继续介绍如何从这三个子系统来排查Linux整个系统的性能问题。

1. 内存

Linux系统实现了非常复杂同时又非常高效的内存管理。通过虚拟内存机制,对于每个进程而言,都可以使用整个地址空间。物理内存是系统硬件提供的内存,是有限的。Linux会在物理内存不足时,使用交换分区的虚拟内存。为了更加高效的使用内存,内核会将暂时不用的内存数据写回到交换空间,这样一来,释放掉的这块内存就可以用于其它目的,当需要用到原有内容时,这些信息又会被重新从交换空间读入物理内存。Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核通过页面回收算法将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。 为了了解内存在系统性能上的影响和一些内存工具的原理,我们需要比较详细的了解Linux内存管理的细节,这里不再叙述。当我们怀疑内存有问题的时候,首先使用free命令查看系统的内存情况:

8368c4e6517cf51596b737c30543bd9e.png

图 1 关于free的输出有下面几个等式:

864334066d5460f97fca72bc469fdd1b.png

Linux总是最大限度地使用物理内存,因此Mem[free]在所有的Linux系统中看起来都会是一个相对较小的值。而真正可用内存是buffers[free],因此了解整体内存概况一般都看buffers和Swap行。free命令只能单纯地看到内存的状态, 需要利用top和vmstat更进一步地查看内存数据,vmstat 1结果如下:

c2e156185eebd3a55c9d163cc6ec4fce.png

图 2 如表1,这里主要是看内存的活动状态以及与IO和CPU的联动信息,swap分区可以让机器在内存猛涨的情况下卡而不死,当内存回落机器则会恢复,swap分区关闭的话,一旦内存需求超过物理内存,系统会直接OOM。

01f7c508a463d8812b98cc8a52d56f32.png

表 1 我们简单地构造一个内存泄露的例子,然后找出内存泄露的原因。使用如下脚本可以模拟出一个内存泄露的进程,在后台运行下面的脚本。

f5b60e2489dd2b4c089333c69c94832f.png

在未知的环境中,我们并不知道哪个进程出现了内存问题,通过基础监控只能初步地知道,系统中有进程可能存在内存泄露问题。使用top找出使用内存最多的几个进程,然后逐步地排除。在模拟的时候已经确切的知道了进程pid是14231,然后使用watch -d -n 1 pmap 14231,如图3,可以清楚地看到进程在内存中的布局,另外对于哪一项在增加也是一目了然,图中匿名映射的地址已经给出,这样子就可以去追踪程序的问题了。另外有时候进程可能是内存泄露相当缓慢,我们可以将pmap的数据记录之后逐项画 图,就可以很直接地知道哪一块的内存在增加了。

2. IO

计算机系统中最慢的就是IO设备了,Linux本身提供了很多方式来适应高速设备与低速设备之间的数据交互。当怀疑是IO造成系统性能问题的时候,需要使用下面的步骤来进一步确定。如图4所示,可以使用iostat -x -k -d 1来每隔一秒输出IO相关信息。需要关心的指标及其含义如下:

73e29e595e394f50aae2da9107553a4f.png

表2

如果[r/s]/[rkB/s]的值相对于正常机器小,可以说明应用程序有良好的读取性能,多数IO都是顺序IO,反之则是随机读占多数,如果有可能就可以修改应用程序尽量避免大量随机IO产生。 avgqu-sz相对正常机器偏大的话,就代表IO请求队列过大,IO负载有点偏高了。 svctm可以作为硬盘性能的一个指标,值越小,代表性能越好。 await 实际上是svctm加上等待时间,await与svctm越相近,说明系统IO越空闲。 %util是最直观的体现IO性能的,>50就代表IO忙了,100就说明IO饱和,系统会变的很慢。

34e3faec19b0d2eaaecffd167abc9c73.png

当内存快要耗尽,并且swap分区开启的情况下,系统会出现频繁的换页操作,这种情况也会将IO打满,所以在系统慢的时候是需要结合CPU、内存和IO共同来确定原因。

3. 网络

还有一个让人头痛的子系统,那就是网络。网络的连通涉及到很多复杂的事情,系统为我们提供了一系列的网络诊断工具。当网卡性能出现问题,也就 是网络传输的速率明显低于预期的时候,可以通过下面几个步骤来确定原因:

确定网卡工作速率是否正常,目前普通服务器一般都是1000Mb/s,使用命令ethtool eth0 | grep Speed,如果不是预期的速率,那么有可能是 网卡、网线、水晶头或者是交换机接口出现问题。

理论上千M网卡的数据传输速度能够达到1000/8MB/s, 如果我们的数据足够大,而通过sar -n DEV 1 观测到的速率远小于理论最大值,那么问题可能是带宽、对端性能、自身硬盘速率或应用程序中的一种。带宽与对端性能都是本机不可控的因素。一般来说数据传输都需要写入硬盘,而硬盘的写入速度比网卡速度低,因此导致传输速率慢,可以通过使用内存来缓存数据的方式解决,或者提升硬盘的性能例如使用SSD;而应用程序的原因就是在接收或者发送数据之前,应用程序的处理逻辑导致其变慢,例如在使用scp或者rsync传输拷贝数据的时候,一般即使是在使用SSD硬盘的情况下也只能达到40MB/s左右,这主要受限于两个命令默认参数下的处理逻辑,特别是耗时的加解密操作。使用ssh的参数-c blowfish,可以将速率提升到50MB/s,这时候CPU已经成了性能瓶颈,将数据分块,同时起多个任务就可以将速率增加到几乎与网卡理论值相同的值。 网络最复杂的还是连接,而不单单是性能问题,对于具体的诊断技术,这里不再叙述。

4. 总结

CPU、内存、IO和网络,基本上覆盖了Linux系统多数情况下的性能问题。除此以外,还有系统全局的,例如资源限制(经常遇到的不能打开文件,不能创建进程等),系统参数(例如tcp_max_tw_buckets 设置过小会导致连接数达到一定数量后网络连接建立不成功)等。当然每个问题都有其特殊性,需要具体问题具体分析,并且需要多方面因素一起联动分析。有很多问题,我们也没有一个永久有效的排查方法,只能根据经验和系统相关指标来找寻答案,总是在学习中慢慢成长,同时在成长中继续学习。

网易云

更多网易技术、产品、运营经验分享请

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux+性能排查,Linux系统性能排查基础 的相关文章

  • 深度优先遍历(邻接矩阵,邻接表)

    深度优先遍历也称为深度优先搜索 简称为DFS 深度优先遍历的思路是从图中某个顶点V出发 访问此顶点 然后从V的未被访问过的邻接点出发深度优先遍历图 直到图中所有与V路径相通的顶点都被访问到 该遍历过程用到递归 深度优先遍历用到了一个辅助数组
  • Caffe中的优化方法

    在Deep Learning中 往往loss function是非凸的 没有解析解 我们需要通过优化方法来求解 Caffe通过协调的进行整个网络的前向传播推倒以及后向梯度对参数进行更新 试图减小损失 Caffe已经封装好了三种优化方法 分别
  • TypeError: ‘builtin_function_or_method‘ object is not subscriptable解决办法

    python报 TypeError builtin function or method object is not subscriptable 这个错 大概率是因为括号用错了 比如应该用圆括号 用成了方括号 或者缺少括号 应检查括号是否使
  • 进阶项目(12)PS2键盘驱动程序设计讲解

    写在前面的话 我们从小就开始接触电脑 曾经多么羡慕那些在键盘上洋洋洒洒的人 手指轻柔的飞舞 刻画出一章章美丽的篇幅 那么作为工程师的我们 同样拥有着属于我们的情怀 如果曾经的向往变成我们喜欢的玩具 如果曾经的神秘变成我们夜以继日的痴迷 那么
  • 【转】C/C++中的 mutable、volatile 关键字作用详解

    mutable和volatile 很少遇到这两个关键字 学嵌入式估计知道后者 深入研究 C 的估计知道前者 1 mutable 在 C 中 mutable 是为了突破 const 的限制而设置的 被 mutable 修饰的变量 将永远处于可
  • Error: Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘

    目录 出错现象 出错原因 解决方案 出错现象 这个报错是我在安装webpack vue loader的配置中遇到的 如果你不是这个背景请绕行 不然可能无法解决你的问题 主要是安装了npm i vue loader plugin save d
  • #pragma once与 #ifndef的区别

    为了避免同一个文件被include多次 可以采用两种方法 1 ifndef方式2 pragma once方式在能够支持这两种方式的编译器上 二者并没有太大的区别 但是两者仍然还是有一些细微的区别 方式一 ifndef SOMEFILE H
  • matlab 小波分析实例,小波分析MATLAB实例

    小波分析MATLAB实例 由会员分享 可在线阅读 更多相关 小波分析MATLAB实例 7页珍藏版 请在人人文库网上搜索 1 到小波分析1 背景传统的信号理论 是建立在Fourier分析基础上的 而Fourier变换作为一种全局性的变化 其有
  • GitLab安装配置教程-Docker方式安装

    文章目录 一 安装 二 配置 三 使用 四 SSH连接方式 五 Http连接方式 参考文档 一 安装 环境准备 CentOS 7 6 Minimal 192 168 73 140 Docker 20 10 12 创建一个目录用于存放日志 配
  • zabbix详解(十二)——zabbix监控MySQL主从状态实战

    今天继续给大家介绍Linux运维相关知识 本文主要内容是zabbix监控MySQL主从同步状态 本文旨在配置实现zabbix对MySQL主从同步状态的监控 并且当MySQL主从同步状态宕机后 进行邮件报警 一 MySQL主从配置 关于MyS
  • Java版PPT处理控件Aspose.Slides迎来v19.12升级!轻松创建旭日图并调整样式

    Aspose Slides for Java是独特的演示处理API 使应用程序能够读取 编写 修改和转换PowerPoint演示文稿 作为独立的API 它提供了管理PowerPoint关键功能的功能 例如管理文本 形状 表格和动画 向幻灯片
  • RFID门禁系统

    RFID门禁系统 前言 一 RFID射频 二 功能演示 三 我们使用的硬件和软件 三 使用步骤 1 新建工程 2 程序 总结 前言 这一个RFID项目主要是通过RC522模块来达到智能识别ID卡 RFID卡 通过识别ID卡号从而实现门禁的功
  • 歌尔股份2021年报:AR/VR、游戏主机成主要营收来源

    过去1年中 Quest 2 Neo 3等VR一体机愈加流行 关注度越来愈高 与此同时 作为AR VR产业ODM厂商 在声光电多方面积极部署的歌尔优势正在显现 根据歌尔2021年报中显示 AR VR 游戏主机等智能硬件业务业绩大涨 已经成为营
  • Windows共享文件夹

    Windows共享文件夹 将服务器相应磁盘设置为共享式 本机可远程访问服务器 共享到本地 注意 将服务器相应磁盘设置为共享式 这里E已经是共享式 将D也设置为共享式 Desktop erps210 d 本机可远程访问服务器 将本机和服务器的
  • NUC980开源项目3-硬件进度

    上面是我的微信和QQ群 欢迎新朋友的加入 今天已下单 外观上和参考电路是一致的 不过我把走线改了下 可能是EDA下载的时候 有些数据乱了 不能搞到原版文件 3D效果
  • Java面试题--网络

    当你用浏览器打开一个链接的时候 计算机做了哪些工作步骤 1 解析域名 2 发起TCP的3次握手 3 建立TCP请求后发起HTTP请求 4 服务器相应HTTP请求 5 浏览器得到HTML代码 进行解析和处理JSON数据 并请求HTML代码中的
  • htmlspecialchars详解

    1 首先看下面的代码 你运行一下会发现显示完全正确 显示为 This is br text 你查看源代码会发现 This is lt br gt text htmlspecialchars 的作用就是显示完全正确 但是源码改变 具体改变规则
  • Redis的5种基本数据类型

    一 什么是Redis 在介绍redis的五种数据类型之前 我们要知道什么是redis redis是英文Remote Dictionary Server的缩写 也就是远程字典服务 它是一个开源的使用ANSI C语言编写的 支持网络 可基于内存
  • 数据库中的表关系

    1 一对一关系实例 假设现在有两张表 一个是妻子表 一个是丈夫表 这两张表很明显存在一对一的关系 存在两张表A和B 分别添加主键 在其中一张表当中设置外键关联另一张表当中的主键 2 一对多关系实例 一对多表关系当中 一方的表称为主表 多表的

随机推荐

  • 常见web漏洞原理整理

    文章目录 一 SQL注入 1 1SQL注入漏洞原理 1 2 SQL注入的两个关键点 1 3 与Mysql注入相关的知识点 1 4 SQL注入的主要分类 1 5 SQL注入的流程 1 5 1 普通SQL注入 1 5 2 盲注 1 6 SQL注
  • 微信和支付宝对我们生活产生翻天覆地的改变

    移动支付同样也是移动互联网发展的产物之一 如今我们基本已经告别了现金时代 大家出门兜里都不放现金了 所有的消费几乎都可以通过线上支付来实现 微信和支付宝的出现 对我们的生活产生了翻天覆地的改变 科技千万种 能够便民利民 解决用户需求的科技
  • 十个激活函数

    激活函数 Activation Function 是一种添加到人工神经网络中的函数 旨在帮助网络学习数据中的复杂模式 类似于人类大脑中基于神经元的模型 激活函数最终决定了要发射给下一个神经元的内容 在人工神经网络中 一个节点的激活函数定义了
  • 2014年秋季学期CSDN高校俱乐部全国高校巡讲讲师招募

    CSDN高校俱乐部 以下简称 俱乐部 是由全球最大中文IT技术社区CSDN发起的 由全国各高校在校生代表自发加入的IT技术学习型组织 CSDN由此搭建起行业与校园之间的桥梁 公益为各俱乐部提供行业资讯 技术学习 专家交流 技术竞赛等学习服务
  • java课堂练习——类与对象

    今天我们在Java课上学习了类与对象的知识点 一 验证ClassAndObjectTest java 1 代码 public class ClassAndObjectTest public static void main String a
  • AltiumDesigner 为何PCB中无法选中元器件

    关掉过滤器 清除当前过滤器
  • PhotoShop 基础教程-000

    文章目录 前言 总目录 前言 主要讲解photoshop基础知识 所有课程来源B站 PS教程 总目录 第1节 PhotoShop基础课程 版本发展 第2节 PhotoShop基础课程 基础操作 第3节 PhotoShop基础课程 PS界面认
  • Open3D 查看点的坐标

    一 手动选点 函数pick points pcd 创造了一个VisualizerWithEditing实例去模仿draw geometries 创造可视化窗口 添加几何图形 可视化几何图形和结束 VisualizerWithEditing提
  • dnf服务器维护公告,11月18日早4点-12点服务器例行维护公告

    尊敬的DNF用户 为保证服务器的稳定运行 提高游戏品质 我们将于2008年11月18日 周二 凌晨04 00 12 00对所有服务器停机 进行例行维护工作 根据维护工作的进度 停机结束时间有可能提前或者延后 由于福建1区 广东2区 广东3区
  • Apache Beam -- 简介

    概述 在大数据的浪潮之下 技术的更新迭代十分频繁 受技术开源的影响 大数据开发者提供了十分丰富的工具 但也因为如此 增加了开发者选择合适工具的难度 在大数据处理一些问题的时候 往往使用的技术是多样化的 这完全取决于业务需求 比如进行批处理的
  • IT专业技术人员学习网站整理

    1 高端数据资料库 http www chiefdatum com 站点介绍 包含产品数据 学习资料 技术资料 热门图书 眼镜设计 考研 医疗器械等资料为一体的综合性网站 提供专业性下载 2 CSDN NET http www csdn n
  • SpringMVC入门案例

    SpringMVC 概述 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 三层架构 表现层 负责数据展示 业务层 负责业务处理 数据层 负责数据操作 MVC Model View Controller 一种用于设计创建
  • Java本地缓存CaffeineCache集成

    首先导入需要的依赖
  • 递归展示用户端商品分类列表的层级关系

    递归展示用户端商品分类列表的层级关系 自定义列表实体类 service层 递归调用 自定义列表实体类 添加属性 private List
  • Khan公开课 - 统计学学习笔记:(三)随机变量、概率密度、二项分布、期望值

    随机变量 Random Variable 随机变量和一般数据上的变量不一样 通常用大写字母表示 如X Y Z 不是个参数而是function 即函数 例如 下面表示明天是否下雨的随机变量X 如下 又例如X 每小时经过路口的车辆 随机变量是个
  • MicroPython串口数据转换技巧

    技巧一 还原从串口接收的HEX字符串 首先上官方文档 确认接收数据类型为bytes 串口读来的bytes类型HEX数据转换成HEX类型字符串转换函数 ByteToHex的转换 返回数据16进制字符串 def ByteToHex bins r
  • 使用Nacos实现分布式配置管理和服务发现

    文章目录 一 前言 二 Nacos 1 1什么是Nacos 1 1 1 服务发现和注册 1 1 1 1 服务注册 1 1 1 2 服务发现 1 2 Nacos的使用 1 2 1 配置管理 1 2 2 服务发现 三 结论 一 前言 在现代分布
  • 相关滤波的视觉目标跟踪算法学习

    相关滤波的视觉目标跟踪算法学习内容 1 视觉目标跟踪的难点 训练数据有限 通用目标跟踪任务中 目标先验知识缺乏 仅有目标初始位置信息 目标不确定性 跟踪过程中 随着目标尺寸 形状以及姿态等变化 其外观模 型存在明显差异 多目标跟踪任务中 当
  • 1.2 DICOM成像协议剖析

    以下链接是本系列文章 不足之处 可在评论区讨论 系列文章 1 1 DICOM协议简介及应用 1 2 DICOM成像协议剖析 1 3 DICOM成像协议实现思路 1 4 DICOM图像CT值计算 1 5 DICOM图像CT值转RGB 1 6
  • linux+性能排查,Linux系统性能排查基础

    此文已由作者李晶授权网易云社区发布 欢迎访问 上一期运维季刊中 我们重点从CPU方面分析了Linux系统性能瓶颈 除了CPU之外 内存 IO和网络也是常见的造成系统出现问题的根源 本篇我们继续介绍如何从这三个子系统来排查Linux整个系统的