当前位置:   article > 正文

Linux系统这些压测工具,你用过吗?

Linux系统这些压测工具,你用过吗?

作为一名运维人员,你是否遇到过这种场景?需要用工具测试系统cpu或内存占用高来触发告警,或者通过压测测试服务的并发能力。作为运维工程师,也可以通过这些命令复现故障场景。那么通过本文可以让你掌握常用的测试命令和工具。

  一、前言

  部分场景下,定位和复现项目问题需要使用工具进行系统压测,模拟和还原故障现场。那么测试或者压测工具就派上用场了,下面我们分不同场景来模拟工具的使用

  二、测试工具

  2.1 网络限速工具tc

  tc 是 Linux 中用于配置网络参数的命令行工具,通过它可以模拟不同网络状况,实现网络限速的效果。

  使用场景:网络限速工具常用于模拟弱网络环境,测试系统在低带宽或高延迟情况下的性能。

  用法举例:

  1. # 设置延时30ms
  2.   sudo tc qdisc add dev eth0 root netem delay 30ms
  3.   # 范围内延时(10-50ms)
  4.   sudo tc qdisc add dev eth0 root netem delay 30ms 20ms
  5.   #设置丢包10%
  6.   sudo tc qdisc add dev eth0 root netem loss 10%
  7.   #删除丢包设置
  8.   sudo tc qdisc del dev eth0 root netem loss 10%
  9.   # 显示延时的设置 :
  10.   sudo tc qdisc show
  11.   sudo tc qdisc show dev eth0
  12.   # 修改延时:
  13.   sudo tc qdisc change dev eth0 root netem delay 40ms
  14.   #随机产生1%的重复数据包
  15.   sudo tc qdisc add dev eth0 root netem duplicate 1%
  16.   #设置数据包乱序
  17.   sudo tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
  18.   # 删除延时
  19.   sudo tc qdisc del dev eth0 root netem delay 40ms

实测效果,我们设置主机丢包延迟40ms,修改前延迟如下

设置延迟40ms

  1. [root@knode1 ~]# sudo tc qdisc add dev ens33 root netem delay 40ms
  2.   [root@knode1 ~]# sudo tc qdisc show dev ens33
  3.   qdisc netem 8002: root refcnt 2 limit 1000 delay 40.0ms

 再次ping测试,效果还是很明显的,确实很好用,更多用法,小伙伴们自己去研究吧

 

2.2 CPU 内存测试工具 - stress

stress 是一个 Linux 下的压力测试工具,可以模拟 CPU 和内存的高负载情况,用于测试系统的稳定性。

使用场景:CPU/内存/磁盘测试工具常用于评估系统在高负载条件下的稳定性,检测系统的性能极限。此外,也可以测试告警的时候,使用stress工具来压测

工具安装

  1. sudo apt-get install stress #ubuntu系统
  2.   yum install stress #Centos系统

然后进行 CPU 和内存的测试:

测试 CPU,持续运行 4 个进程

  1. # stress --io 2 --cpu 4 --vm 2 --vm-bytes 80M --timeout 1440m
  2.   --cpu N:
  3.   生成 N 个工作进程来施加 CPU 负载。
  4.   # stress --cpu 8 会创建 8 个进程,每个都尝试占用 100% 的 CPU 时间。
  5.   --io N:
  6.   生成 N 个工作进程来执行 I/O 操作,增加 I/O 负载。
  7.   # stress --io 4 会创建 4I/O 生成进程。
  8.   --vm N:
  9.   # 生成 N 个工作进程来分配内存并定期写入随机数据。
  10.   每个进程默认分配 256MB 内存。
  11.   --vm-bytes B
  12.   #指定每个 --vm 工作进程分配的内存量。
  13.   stress --vm 2 --vm-bytes 128M 会生成 2 个工作进程,每个分配 128MB 内存。
  14.   --hdd N:
  15.   # 生成 N 个工作进程来执行磁盘 I/O 操作。
  16.   stress --hdd 2 会创建 2 个磁盘 I/O 生成进程。
  17.   --hdd-bytes B
  18.   # 指定每个 --hdd 工作进程写入磁盘的数据量。
  19.   stress --hdd 1 --hdd-bytes 1G 会创建一个工作进程来写入 1GB 的数据。
  20.   --timeout T:
  21.   # 指定 stress 运行的时间,T 是时间,可以是秒(默认)、分钟(加 m)、小时(加 h)。
  22.   stress --cpu 4 --timeout 30s 会在 30 秒后停止 CPU 负载测试
  23.   # 显示详细信息,包括生成的工作进程的状态。
  24.   --verbose

实验:压测4个cpu,持续时间180s

stress --cpu 4 --timeout 180s

 

测试内存,分配 1GB 内存

  1. stress --vm 2 --vm-bytes 20G --timeout 360s
  2.   --vm 2: 表示启动2个虚拟内存压力工作线程。
  3.   --vm-bytes 20G: 每个工作线程使用的虚拟内存大小为20GB。
  4.   --timeout 360s: 设置压力测试持续时间为360秒(6分钟)

 

2.3 磁盘测速工具dd

  dd 是一个 Linux 下的命令行工具,用于复制文件并对数据进行转换。通过它,我们可以测试硬盘的读写速度。

  使用场景:硬盘测速工具常用于评估磁盘性能,选择最适合的存储方案,并检测磁盘是否存在性能瓶颈。

  要测试读取速度和写入速度,可以使用dd命令的不同参数。例如,要测试读取速度,可以使用if参数从文件读取数据,而要测试写入速度,可以使用of参数将数据写入文件。

  测试写入速度:

dd if=/dev/zero of=/data/test bs=4k count=100k

 这会将零数据写入/data/test文件中,测试写入速度

dd if=/data/test of=/dev/null bs=4k

  这会从/data/test文件中读取数据并将其丢弃,从而测试读取速度。

  注:也可以使用fio来测磁盘速度

  2.4. 流量访问压测工具 - ab

  ab 是 Apache 自带的一个小型工具,用于测试 HTTP 服务器的性能。

  使用场景:流量访问压测工具常用于评估 Web 服务器的性能,检测系统在并发访问下的表现。

  ab工具安装

  1. sudo apt-get install apache2-utils #ubuntu系统
  2.   sudo yum install httpd-tools #Centos系统

测试网站的并发连接数

ab -c 10 -n 100 https://example.com/

  这将创建10个并发连接,每个连接执行100个请求。

  测试网站的请求速度

ab -n 1000 -c 100 https://example.com/

  这将创建100个并发连接,总共执行1000个请求`.这时可以通过监控观察cpu和内存,用来初步评估平台的并发承载能力。

  1. ​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
  5. 可以免费学习!划重点!开源的!!!
  6. qq群号:485187702【暗号:csdn11

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/636505
推荐阅读
相关标签
  

闽ICP备14008679号