首页 > 系统相关 >Linux系统下的压测工具

Linux系统下的压测工具

时间:2024-04-07 15:58:32浏览次数:23  
标签:stress 压测 sudo dev -- 测试 Linux 工具 tc

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

一、前言

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

二、测试工具

2.1 网络限速工具tc

tc 是 Linux 中用于配置网络参数的命令行工具,通过它可以模拟不同网络状况,实现网络限速的效果。 使用场景:网络限速工具常用于模拟弱网络环境,测试系统在低带宽或高延迟情况下的性能。 用法举例:
  # 设置延时30ms
  sudo tc qdisc add dev eth0 root netem delay 30ms  
  # 范围内延时(10-50ms)
  sudo tc qdisc add dev eth0 root netem delay 30ms 20ms 
  #设置丢包10%
  sudo tc qdisc add dev eth0 root netem loss 10%
  #删除丢包设置
  sudo tc qdisc del dev eth0 root netem loss 10%  
  # 显示延时的设置 :
  sudo tc qdisc show
  sudo tc qdisc show dev eth0
  # 修改延时:
  sudo tc qdisc change dev eth0 root netem delay 40ms
  #随机产生1%的重复数据包
  sudo tc qdisc add dev eth0 root netem duplicate 1%
  #设置数据包乱序
  sudo tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
  # 删除延时
  sudo tc qdisc del dev eth0 root netem delay 40ms

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

 设置延迟40ms

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

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

 2.2 CPU 内存测试工具 - stress

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

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

工具安装

  sudo apt-get install stress #ubuntu系统
  yum install stress  #Centos系统
然后进行 CPU 和内存的测试: 测试 CPU,持续运行 4 个进程
  # stress --io 2 --cpu 4 --vm 2 --vm-bytes 80M --timeout 1440m
  --cpu N:
  生成 N 个工作进程来施加 CPU 负载。
  # stress --cpu 8 会创建 8 个进程,每个都尝试占用 100% 的 CPU 时间。
  --io N:
  生成 N 个工作进程来执行 I/O 操作,增加 I/O 负载。
  # stress --io 4 会创建 4 个 I/O 生成进程。
  --vm N:
  # 生成 N 个工作进程来分配内存并定期写入随机数据。
  每个进程默认分配 256MB 内存。
  --vm-bytes B:
  #指定每个 --vm 工作进程分配的内存量。
  stress --vm 2 --vm-bytes 128M 会生成 2 个工作进程,每个分配 128MB 内存。
  --hdd N:
  # 生成 N 个工作进程来执行磁盘 I/O 操作。
  stress --hdd 2 会创建 2 个磁盘 I/O 生成进程。
  --hdd-bytes B:
  # 指定每个 --hdd 工作进程写入磁盘的数据量。
  stress --hdd 1 --hdd-bytes 1G 会创建一个工作进程来写入 1GB 的数据。
  --timeout T:
  # 指定 stress 运行的时间,T 是时间,可以是秒(默认)、分钟(加 m)、小时(加 h)。
  stress --cpu 4 --timeout 30s 会在 30 秒后停止 CPU 负载测试
  # 显示详细信息,包括生成的工作进程的状态。
  --verbose:

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

stress --cpu 4 --timeout 180s

 

 

 测试内存,分配 1GB 内存

  stress --vm 2 --vm-bytes 20G --timeout 360s
  --vm 2: 表示启动2个虚拟内存压力工作线程。
  --vm-bytes 20G: 每个工作线程使用的虚拟内存大小为20GB。
  --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工具安装:
  sudo apt-get install apache2-utils #ubuntu系统
  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和内存,用来初步评估平台的并发承载能力。

标签:stress,压测,sudo,dev,--,测试,Linux,工具,tc
From: https://www.cnblogs.com/datacenter/p/18119195

相关文章

  • 【Linux】Makefile 基本语法
    make:一般说的是GNUMake,是一个软件,将源代码文件编译成可执行的二进制文件;Makefile:make工具编译的时候需要使用Makefile文件,Makefile文件描述了整个工程的编译、连接规则。接上一节:make工具和Makefile文件的引入Makefile举例注意Makefile的大小写!!!需要......
  • 原型设计工具比较及实践
    一、对墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点的分析墨刀适用领域:网页设计和移动应用界面设计快速原型制作和协作设计用户体验设计和交互设计优点:界面直观,上手简单,适合初学者快速学习和使用。支持实时协作,多人可以同时在同一个项目上工作,提高团队......
  • 远程连接与Linux基础使用指南
    1.远程连接与Linux基础使用指南1.远程连接排错详解1.0 Vmware小技巧挂起:把正在运行的虚拟机暂停,这样好处就是虚拟机不用关机。快照:给虚拟机当前状态拍摄一个保存节点,这个保存的节点可以用于恢复。可以在开机,挂起,关机状态拍摄。1.1现象关键提示:Connectionfaile......
  • Linux之隔离技术
    前言Linux的内核有两大特性Namespace和CGroup,这两种特性可以在Linux主机上实现主机名、用户、网络等全局资源的隔离,也是实现网络虚拟化、容器技术的基础。命名空间LinuxNamespace(命名空间)是一种操作系统层级的资源隔离技术,能够将Linux的全局资源,划分为namespace范围内......
  • TalkingData——Unity应用开发中集成统计分析工具
    第一步:帐号注册官方网站:TalkingData-移动.数据.价值第二步:创建应用查看appid可以进入网站注册,注册好以后就可以创建应用 创建好应用后,点击 应用管理-》基本信息就可以查看自己的AppID第三步:申请对应平台的sdk 接下来就是申请sdk这里是申请sdk的网站:SDK定制填写......
  • ZYNQ学习之Petalinux 设计流程实战
    基本都是摘抄正点原子的文章:<领航者ZYNQ之嵌入式Linux开发指南V3.2.pdf,因初次学习,仅作学习摘录之用,有不懂之处后续会继续更新~PetaLinux工具提供了在Xilinx处理系统上自定义、构建和部署嵌入式Linux解决方案所需的一切。该解决方案旨在提高设计生产力,可与Xilinx硬......
  • Win11中安装虚拟化软件VMware,以及Linux虚拟机的详细安装配置
    文章目录前言安装VMwareWorkstationPro安装注意事项确认服务正常开启确认虚拟网络正常确认虚拟网卡使用VM新建Linux虚拟机新建虚拟机向导开启虚拟机后电脑蓝屏(可能)安装Linux虚拟机登录虚拟机前言记录时间[2024-4-7]本文讲述如何在Win11中安装虚拟化软......
  • 密码管理工具KeeWeb使用
    好处统一管理密码自动填充 浏览器google或opera,我使用的opera客户端分为桌面端和web,推荐使用webhttps://app.keeweb.info安装设置汉化选择最后一个使用插件安装,安装中文语言包插件浏览器集成   建立链接后续则可以自动填入密码 ......
  • linux 的一个socket 客户端程序
    linux的一个socket客户端程序 #ifndef__TCP_CLIENT_TEST_1__#define__TCP_CLIENT_TEST_1__#include<iostream>#include<cstring>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>intmain(){constchar*s......
  • Linux C指针以及指针在Linux内核中的应用
    在Linux环境下编写C语言程序时,指针是一个非常重要的概念,因为它们为处理内存地址、数组、字符串、函数、结构体等提供了极大的灵活性。在本篇博客中,我们将深入探讨C语言中的指针,理解它们的工作原理,并通过示例来展示它们的用途。什么是指针?指针是C语言的核心特性之一,它是一......