【测试沉思录】16. 性能测试中的系统资源分析之三:磁盘

news2024/10/5 17:16:14

作者:马海琴 编辑:毕小烦

三. 磁盘

磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。磁盘就像人的大脑皮层,负责数据的储存、记忆。

磁盘对于服务器来说十分重要,一旦出现服务器磁盘空间不足,就有可能导致服务器部署的服务异常甚至宕机

1. 分析磁盘异常

1.1 分析磁盘占用率较高的问题

STEP 1. 用 df 查看系统磁盘的使用情况

我们关注其中数据块/dev/mapper/vg00-lvroot的使用。当磁盘占用率过高的时候,需要分析占用是否正常,如果是正常的那就需要增加磁盘大小;如果是不正常的,那么就需要进一步分析是哪里引起的异常。

img

STEP 2. 用 du 查找大文件

通过 du 命令,逐步查找最大文件。找到引起异常的文件,基本就能够锁定的问题的所在。

img

1.2. 分析系统 I/O 较高的问题

STEP 1. 用 top 查看 wa 占用率

当我们通过 top 命令发现 **wa** 占用率逐渐升高时,说明系统 I/O 存在压力。

img

STEP 2. 用 iostat 查看磁盘繁忙程度

我们发现 await 远远高于 svctm,说明 IO 等待队列较长,磁盘十分繁忙;而 w_await 远高于 r_await,说明是磁盘写入造成的磁盘繁忙。

img

STEP 3. 用 pidstat 查看各进程 IO 使用情况

通过pidstat -d 1 显示各个进程的 IO 使用情况,发现 3046 这个进程的写入的速度较快。

img

STEP 4. 用 strace 查看系统调用过程

通过strace -p pid 发现一直在执行数据写入的操作。

img

STEP 5. 用 lsof 查找正在进行读写操作的文件

通过lsof -p pid 发现文件 test.txt 的写入量很大。

img

根据出现问题的进程和定位的文件名称,我们再结合源码分析,最后定位出现问题的地方,如果代码无法优化,那就需要考虑提升磁盘的性能。

2. 命令详解

df 命令

通过df命令可以查看服务器磁盘的使用情况。

命令格式:

df [-][ahHikmlPTtx][--block-size=<区块大小>][--no-sync][--sync][文件或设备]

参数解释:

  • a:代表包含全部的文件系统。
  • h:以可读性较高的方式来显示信息。
  • H:与-h参数相同,但在计算时是以 1000 Bytes 为换算单位而非 1024 Bytes
  • i:显示 inode 的信息。
  • k:以 KB 为单位显示容量,默认以 KB 为单位(即指定区块大小为 1024 字节)。
  • m:以 MB 为单位显示容量,默认以 MB 为单位(即指定区块大小为 1048576 字节)。
  • l:仅显示本地端的文件系统。
  • P:使用 POSIX 的输出格式。
  • T:显示文件系统的类型。
  • t:等价于--type=TYPE,仅显示指定文件系统类型的磁盘信息。
  • x:等价于--exclude-type=TYPE,不要显示指定文件系统类型的磁盘信息。
  • block-size:以指定的区块大小来显示区块数目。
  • no-sync:在取得磁盘使用信息前,不要执行 sync 指令,此为预设值。
  • sync:在取得磁盘使用信息前,先执行 sync 指令。

如:

img

结果说明:

  • 系统文件(Files``ystem):表示文件系统位于哪个分区,展示文件系统名称。

    • 其中 tmpfs 是一个临时文件系统,驻留在内存中,读写非常快,可以提供较高的访问速度。
  • 容量(Size):文件系统总容量。

  • 已用(Used):文件系统已使用的容量。

  • 可用(Avail):文件系统空闲的容量。

  • 可用%(Use%):文件系统空闲容量占比。

  • 挂载点(Mounted on):文件系统的挂载点。

du 命令

通过du命令查看具体目录下的文件/目录占用空间大小。

命令格式:

du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][目录或文件]

参数解释:

  • -a:显示目录中个别文件的大小、
  • -b:显示目录或文件大小时,以 byte 为单位、
  • -c:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和、
  • -D:显示指定符号连接的源文件大小、
  • -h:以 K,M,G 为单位,提高信息的可读性、
  • -H:与 -h 参数相同,但是 K,M,G 是以 1000 为换算单位。
  • -k:以 1024 bytes 为单位。
  • -l:重复计算硬件连接的文件。
  • -L<符号连接>:显示选项中所指定符号连接的源文件大小。
  • -m:以 1MB 为单位。
  • -s:仅显示总计,常用du -sh *统计当前目录下所有一级目录/文件的总用量。
  • -S:显示个别目录的大小时,并不含其子目录的大小。
  • -x:以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件>:在 <文件> 指定目录或文件。
  • --exclude=<目录或文件>: 略过指定的目录或文件。
  • --max-depth=<目录层数>: 超过指定层数的目录后,予以忽略。

如:

img

iostat 命令

使用iostat可以监控磁盘的使用情况,通过这个命令可以看出磁盘是否繁忙。

如:

img

结果说明:

avg-cpu 段:

  • %user:在用户级别运行所使用的 CPU 的百分比
  • %nice:nice操作所使用的 CPU 的百分比
  • %sys:在系统级别(kernel)运行所使用 CPU 的百分比
  • %iowait:CPU 等待硬件 I/O 时,所占用 CPU 百分比
  • %idle:CPU 空闲时间的百分比

Device 段:

  • tps:每秒钟发送到的 I/O 请求数
  • Blk_read /s:每秒读取的 block 数
  • Blk_wrtn/s:每秒写入的 block 数
  • Blk_read:读入的 block 总数
  • Blk_wrtn:写入的 block 总数

展示所有磁盘的使用状态

iostat -d -k 1 10打印所有磁盘的使用状态,每秒钟打印一次,打印十次之后结束。

img

结果说明:

  • tps:该设备每秒的传输次数。“一次传输”意思是“一次 I/O 请求”。多个逻辑请求可能会被合并为“一次 I/O 请求”。“一次传输”请求的大小是未知的。
  • kB_read/s:每秒从设备(drive expressed)读取的数据量
  • kB_wrtn/s:每秒向设备(drive expressed)写入的数据量
  • kB_read:读取的总数据量
  • kB_wrtn:写入的总数量数据量

以上结果的单位都为 KB。

IO 相关扩展信息展示

iostat -d -x -k 1 10打印磁盘扩展信息,每秒钟打印一次,打印十次之后结束。

img

结果说明:

  • rrqm/s:每秒这个设备相关的读取请求有多少被 Merge 了(当系统调用需要读取数据的时候,VFS 将请求发到各个 FS,如果 FS 发现不同的读取请求读取的是相同 Block 的数据,FS 会将这个请求合并 Merge )。

  • wrqm/s:每秒这个设备相关的写入请求有多少被 Merge 了。

  • r/s:每秒读取的扇区数。

  • w/s:每秒写入的扇区数。

  • rkB/s:每秒向设备发出的读取请求的数量。

  • wkB/s:每秒向设备发出的写入请求的数量。

  • avgrq-sz:平均请求扇区的大小。

  • avgqu-sz:是平均请求队列的长度。队列长度越短,说明性能越好。

  • await:每一个 I/O 请求的处理的平均时间(单位是毫秒)。

    • 这里可以理解为 IO 的响应时间,一般地系统 IO 响应时间应该低于 5ms,如果大于 10ms 就比较大了。
    • 这个时间包括了队列时间和服务时间。一般情况下,await 大于 svctm,如果 svctm 的值与 await 很接近,表示几乎没有 I/O 等待,磁盘性能很好,如果 **await** 的值远高于 **svctm** 的值,则表示 **I/O** 队列等待太长,系统上运行的应用程序将变慢
  • r_await:每一个读取请求的处理的平均时间。

  • w_await:每一个写入请求的处理的平均时间。

  • svctm:表示平均每次设备 I/O 操作的服务时间(以毫秒为单位)。

  • %util: 在统计时间内所有处理 IO 时间,除以总共统计时间。

    • 如果统计间隔 1 秒,该设备有 0.7 秒在处理 IO,而 0.3 秒闲置,那么该设备的 %util = 0.7/1 = 70% 。所以该参数暗示了设备的繁忙程度
    • 一般地,如果 **%util** **100%** 表示设备已经接近满负荷运行了(当然如果是多磁盘,即使 %util100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

(完)

如果文章对你有帮助,记得留言、点赞、加关注哦!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大学生静态HTML网页源码——佛山旅游景点介绍网页代码 家乡旅游网页制作模板 web前端期末大作业

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

学生个人网页模板 简单个人主页--贝聿铭人物介绍 6页带表单 带报告3800字

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | ‍个人博客网站 | ‍个人主页介绍 | 个人简介 | 个人博客设计制作 | 等网站的设计与制作 | 大学生个人HTML网页设计作品 | HTML期末大学生网页设计作业…

c语言:初识指针(二)

初识指针一.野指针1.野指针形成原因一是&#xff1a;未初始化2.野指针形成原因二&#xff1a;指针越界3.野指针形成原因三&#xff1a;指针所指向的内存空间被释放二.指针的运算1.指针-整数运算2.指针-指针3.指针的关系运算三.指针和数组四.二级指针五.指针数组1.定义2.用一维数…

APS生产计划排产在装备制造业的应用

装备制造业是对所有为国民经济各部门的简单再生产和扩大再生产提供技术装备的制造工业的总称&#xff0c;范围包括航空、航天、军工制造&#xff1b;民用飞机、铁路、船舶、汽车等先进交通运输设备制造&#xff1b;石油、矿产、化工、压力容器、电力成套设备制造&#xff1b;以…

Jaya算法在电力系统最优潮流计算中的应用(创新点)【Matlab代码实现】

目录 1 概述 2 数学模型 2.1 目标函数 2.2 约束条件 2.3 Jaya 算法 3 仿真结果 4 Matlab代码实现 1 概述 最优潮流计算与电力系统的稳定、经济运行密切相关&#xff0c;自20世纪60年代提出最优潮流的概念&#xff0c;大量学者相继提出了各种优化技术来求解电力系统的最…

Google Earth Engine(GEE)—— 多光谱指数整合中推导出湿地覆盖类型 (WCT)

湿地覆盖被定义为归因于植被、浑浊度、含水土壤和水量等潜在生物物理条件的湿地空间均匀区域。在这里,我们提出了一种新方法来导出湿地覆盖类型 (WCT),该方法结合了三个常用的多光谱指数 NDVI、MNDWI 和 NDTI,位于印度各地不同地貌和气候环境的三个大型拉姆萨尔湿地。这些湿…

【CNN】SENet——将注意力机制引入通道维度

前言 SENet&#xff0c;胡杰&#xff08;Momenta&#xff09;在2017.9提出&#xff0c;通过显式地建模卷积特征通道之间的相互依赖性来提高网络的表示能力&#xff0c;即&#xff0c;通道维度上的注意力机制。SE块以微小的计算成本为现有的最先进的深层架构产生了显著的性能改…

高等数学(第七版)同济大学 习题10-2(中5题) 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-2&#xff08;中5题&#xff09; 函数作图软件&#xff1a;Mathematica 11.画出积分区域&#xff0c;把积分∬Df(x,y)dxdy表示为极坐标形式的二次积分&#xff0c;其中积分区域D是:\begin{aligned}&11. \ 画出积分…

算法图解学习2 大O表示

random recording 随心记录 What seems to us as bitter trials are often blessings in disguise. 看起来对我们痛苦的试炼&#xff0c;常常是伪装起来的好运。 大O表示法是一种特殊的表示法&#xff0c;指出了算法的速度有多快。 背景引入 Bob要为NASA编写一个查找算法&…

MobaXterm连接报错Network error: Connection timed out

今天打开MobaXterm远程连接我VMware虚拟机的时候出现以下界面&#xff0c;问题详情如下&#xff1a;Network error: Connection timed out Session stopped - Press <return> to exit tab - Press R to restart session - Press S to save terminal output t…

RabbitMQ介绍

介绍 RabbitMQ是 一个由erlang语言编写的、开源的&#xff0c;基于AMQP协议实现的消息队列&#xff0c;具有MQ应用解耦、流量削峰、异步的特点 官网地址 https://www.rabbitmq.com/ 功能特点 支持顺序消息&#xff0c;保证消息送达消费端的前后顺序 支持消息补偿&#xff0…

计算机是什么

文章目录计算机是什么计算机类别计算机优缺点计算机应用实例计算机是什么 计算机&#xff08;英文“computer”&#xff09;一词源自拉丁文中的“computare”&#xff0c;本意为计算。 发展至今&#xff0c;计算机专门代指“可编程”的电子设备。所谓“可编程”&#xff0c;…

图像超分辨率模型:Real-ESRGAN | 论文阅读+实战记录

前言 最近需要一个超分的模型&#xff0c;经过调研准备用 Real-ESRGAN。特此记录论文阅读和实战过程。 论文阅读 论文地址&#xff1a;Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data Github&#xff1a;https://github.com/xinntao/Re…

[附源码]java毕业设计学生宿舍设备报修

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【教学类-16-01】20221122《世界杯七巧板A4-随机参考图》(大班)

效果展示&#xff1a; 单页效果 多页效果 背景需求&#xff1a; 2022年11月20日 2022年卡塔尔世界杯足球赛在卡塔尔首都多哈举行。借此契机&#xff0c;我设计一份七巧板让幼儿拼”踢足球“的造型。 图片准备&#xff1a; 从网上拉了18张各种”踢球七巧板造型图“ 新建一个…

几种常用关系型数据库架构和实现原理

【摘要】本文介绍几种常用(闭源、开源)关系型数据库的架构和实现原理,包括Oracle、MySQL、PostgreSQL、GaussDB T,涉及产品最新参数指标等请以各官网为准。 一、 Oracle (一) Oracle 架构 Oracle Server包括数据库(Database)和实例(Instance)两大部分,两者相互独立…

SSO单点登录流程详解

概念 单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。 背景 企业发展初期&#xff0c;系统设计不…

关于pbootcms中被挂马以后的处理

最近一段时间很多使用pbootcms建设的网站都遭遇到了首页挂马的问题,表现形式便是首页页面增加了很多?id123,?/?id37087875.csv,?id26993492.shtml等等形态.当我们查看后台系统日志中的蜘蛛访问或者首页上多了这些链接的时候,基本上就是被挂马了,这个时候我们需要及时作出处…

Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)

文章目录简介一、Ginkgo包的引入和简单介绍二、Dockertest 使用三、编写单元测试1. 编写 data 层的测试代码四、引入 gomock 包&#xff0c;mock 对象模拟依赖项1. 编写生成 mock 文件方法2. 编写 biz 层的测试方法3. 验证单元测试小结简介 本文主要使用 Ginkgo[2] 、gomock[3…

Vue之watch监听

计算属性不能用异步代码&#xff1b;有返回值的函数&#xff0c;用异步代码也不行&#xff1b;没有返回值的函数&#xff0c;可以用异步代码&#xff1b;watch监听也可以放异步代码&#xff1b;data、methods、computed、watch的区别&#xff1a; data&#xff1a;状态&#xf…