文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

学习性能优化,如何模拟各种故障场景?

2024-12-01 15:04

关注

性能优化这个专题,是每个想成为架构师的小伙伴必须学习的知识。在学习性能优化的过程中,我们要学会各种 Linux 命令和工具去检测服务器的 CPU、内存等资源。很多情况下,我们的 CPU、内存资源都是很平稳的,不利于我们学习这些性能检测命令。

今天就介绍一个 Linux 系统压力测试工具 stress,它可以模拟各种系统高负载的场景,方便我们进行性能优化学习!

什么是 stress?

stress 是一个 Linux 系统压力测试工具,主要用来模拟系统系统高负载的场景,其可以对 CPU、内存、IO 及磁盘进行压力测试。

安装指南

在 CentOS8 系统中安装 stress 可以用 rpm 方式安装,只需执行如下命令就可以成功完成安装。

// 获取安装包
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm
// 安装 stress 工具
rpm -ivh stress-1.0.4-16.el7.x86_64.rpm

安装完成后可以运行 stress --version 查看安装版本。

[root@iZwz92ezhi90syoqbgjgn1Z ~]# stress --version
stress 1.0.4

如果可以正常运行,说明 stress 安装成功了。

使用指南

使用 stress 命令非常简单,就是 stress 命令加上各种参数。这里我举几个例子,简单介绍下 stress 命令常见的几种使用方法。

模拟 CPU 消耗

运行下面的命令,创建 4 个消耗 CPU 资源的进程,并持续 600 秒。

stress -c 4 --timeout 600

随后我们使用 watch -d uptime 命令持续监控系统的平均负载情况。

21:55:10 up 7 min,  2 users,  load average: 4.63, 1.32, 0.34
21:56:16 up 8 min, 2 users, load average: 6.63, 2.32, 0.84

可以看到随着时间的推移,系统的平均负载越来越高,这说明我们的 stress 命令起效果了。

模拟内存消耗

运行下面的命令,创建 2 个消耗内存的进程,每个进程占用 200M 内存。

stress -m 2 --vm-bytes 200M

随后我们使用 pidstat -r | grep stress 命令查看内存的占用情况。

[root@iZwz92ezhi90syoqbgjgn1Z ~]# pidstat -r | grep stress
// -r 表示查看内存使用情况
// VSZ 表示虚拟地址大小,虚拟内存的使用 KB
22:00:18 UID PID minflt/s majflt/s VSZ RSS %MEM Command
22:00:18 0 1645 1249.67 0.00 212780 22368 0.29 stress
22:00:18 0 1646 1267.04 0.00 212780 79928 1.04 stress

可以看到 VSZ 这一列的数值为 212780KB,刚好就是 200MB 左右。

模拟磁盘写入

运行下面命令,可以模拟两个进程往当前目录写入固定大小的临时文件,临时文件大小默认为 1G。

stress -d 2

随后我们用 pidstat 监控磁盘,可以看到 kB_wr/s 列的数值较大,表示两个 stress 进程在做大量的写入操作。

[root@iZwz92ezhi90syoqbgjgn1Z ~]# pidstat -d | grep stress
22:07:41 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
22:07:41 0 1730 0.00 15369.44 13980.27 849 stress
22:07:41 0 1731 0.00 15941.86 13876.48 976 stress

模拟大量 IO 操作

运行下面命令,可以模拟 4 个进程执行大量的 sync () 操作。

stress -i 4 --timeout 600

使用 top 可以看到 stress 的 4 个进程占用了大量的 CPU 资源。

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1863 root 20 0 7976 96 0 R 100.0 0.0 0:12.75 stress
1864 root 20 0 7976 96 0 R 100.0 0.0 0:12.78 stress
1865 root 20 0 7976 96 0 R 100.0 0.0 0:12.76 stress
1862 root 20 0 7976 96 0 R 99.7 0.0 0:12.77 stress

使用 pidstat 查看进程,正常情况下可以看到 stress 的 4 个进程产生了大量的 %wait 时间。但由于我做测试的服务器用的是 SSD 盘,因此并没有产生大量的 CPU wait 时间。

[root@iZwz92ezhi90syoqbgjgn1Z ~]# pidstat -u 5 1 
Linux 4.18.0-348.7.1.el8_5.x86_64 (iZwz92ezhi90syoqbgjgn1Z) 22/08/22 _x86_64_ (4 CPU)
22:22:41 UID PID %usr %system %guest %wait %CPU CPU Command
22:22:46 0 1862 0.20 99.60 0.00 0.20 99.80 1 stress
22:22:46 0 1863 0.20 99.80 0.00 0.20 100.00 0 stress
22:22:46 0 1864 0.20 99.60 0.00 0.20 99.80 2 stress
22:22:46 0 1865 0.20 99.80 0.00 0.00 100.00 3 stress

要获取 stress 工具的更多用法,直接输入 stress --help 就可以获取详细信息了,如下所示。

-c, --cpu N            产生 N 个进程,每个进程都反复不停的计算随机数的平方根
-i, --io N 产生 N 个进程,每个进程反复调用 sync () 将内存上的内容写到硬盘上
-m, --vm N 产生 N 个进程,每个进程不断分配和释放内存
--vm-bytes B 指定分配内存的大小
--vm-stride B 不断的给部分内存赋值,让 COW (Copy On Write) 发生
--vm-hang N 指示每个消耗内存的进程在分配到内存后转入睡眠状态 N 秒,然后释放内存,一直重复执行这个过程
--vm-keep 一直占用内存,区别于不断的释放和重新分配 (默认是不断释放并重新分配内存)
-d, --hadd N 产生 N 个不断执行 write 和 unlink 函数的进程 (创建文件,写入内容,删除文件)
--hadd-bytes B 指定文件大小
-t, --timeout N 在 N 秒后结束程序
--backoff N 等待 N 微妙后开始运行
-q, --quiet 程序在运行的过程中不输出信息
-n, --dry-run 输出程序会做什么而并不实际执行相关的操作
--version 显示版本号
-v, --verbose 显示详细的信息

总结

本文向大家介绍了一个常用的压力测试工具 stress,它可以模拟 CPU、内存、磁盘、IO 等操作,方便我们学习性能优化命令。最后献上 stress 工具的参数设置图,大家可以收藏起来,方便后面使用的时候对照。

来源:树哥聊编程内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯