压力测试(内存、磁盘、网络、cpu)

压力测试


为了满足更详细的需求,以下是针对内存、磁盘和网络压力测试工具的更深入介绍和多种案例,涵盖了工具的安装、配置和多样化的使用场景。


1. 内存压力测试工具

stress

  • 描述stress 是一个轻量级的系统压力测试工具,可以对CPU、内存、I/O进行压力测试。适合用于简单的压力测试和验证系统稳定性。

  • 安装

    bash 复制代码
    sudo apt-get install stress
  • 使用场景

    • 基本内存测试

      bash 复制代码
      stress --vm 2 --vm-bytes 512M --timeout 60s

      该命令启动2个内存负载线程,每个线程分配512MB的内存,持续时间为60秒。适用于检测内存的短时间压力。

    • 高负载内存测试

      bash 复制代码
      stress --vm 8 --vm-bytes 1G --vm-hang 0 --timeout 120s

      该命令启动8个线程,每个线程分配1GB内存,持续时间为120秒,并设置内存不被回收。这种配置更适合在高负载下测试内存的稳定性。

    • 并行测试CPU和内存

      bash 复制代码
      stress --cpu 4 --vm 4 --vm-bytes 256M --timeout 90s

      该命令同时对CPU(4个线程)和内存(4个线程,每个256MB)进行压力测试,持续90秒,适合综合性测试系统在高负载下的表现。

memtester

  • 描述memtester 是一种专门用于检测内存错误的工具,适合用于诊断硬件问题。它通过分配和读写内存块,来检测潜在的内存问题。

  • 安装

    bash 复制代码
    sudo apt-get install memtester
  • 使用场景

    • 基本内存错误检测

      bash 复制代码
      sudo memtester 2G 2

      该命令分配2GB内存并执行两次测试,用于检测内存错误。

    • 持续性内存测试

      bash 复制代码
      sudo memtester 4G 0

      该命令分配4GB内存并进行无限次测试,适合用于长时间运行的压力测试,直到用户手动终止。


2. 磁盘压力测试工具

fio (Flexible I/O Tester)

  • 描述fio 是一个功能强大的I/O测试工具,支持各种类型的读写操作。适合用于测试磁盘的读写性能和可靠性。

  • 安装

    bash 复制代码
    sudo apt-get install fio
  • 使用场景

    • 顺序写入测试

      bash 复制代码
      fio --name=write_test --ioengine=libaio --rw=write --bs=1M --numjobs=1 --size=1G --runtime=60 --group_reporting

      该命令使用异步I/O引擎执行顺序写操作,块大小为1MB,总共写入1GB,持续时间为60秒。适用于测试磁盘的顺序写入性能。

    • 随机读写测试

      bash 复制代码
      fio --name=randrw_test --ioengine=libaio --rw=randrw --bs=4k --numjobs=4 --size=2G --runtime=120 --rwmixread=70 --group_reporting

      该命令执行随机读写操作,块大小为4KB,共4个线程,总共读写2GB数据,持续120秒,其中70%为读操作。适合用于模拟数据库负载或其他随机I/O密集型应用的环境。

    • 多线程顺序读测试

      bash 复制代码
      fio --name=read_test --ioengine=libaio --rw=read --bs=512k --numjobs=8 --size=4G --runtime=60 --group_reporting

      该命令使用8个线程并发执行顺序读操作,块大小为512KB,总共读取4GB数据,持续60秒。适合测试磁盘的多线程读取性能。

dd (Data Duplicator)

  • 描述dd 是一个简单但有效的磁盘I/O测试工具,可以用于测试磁盘的读写速度。它通过从一个源复制数据到目标,测量I/O性能。

  • 使用场景

    • 写入速度测试

      bash 复制代码
      dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct

      该命令生成一个1GB的测试文件,并测量写入速度。适合用于简单的写入性能评估。

    • 读取速度测试

      bash 复制代码
      dd if=/tmp/testfile of=/dev/null bs=1G count=1 iflag=direct

      该命令从测试文件中读取1GB数据,并测量读取速度。适合用于简单的读取性能评估。

    • 混合读写测试

      bash 复制代码
      dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 conv=fdatasync

      该命令通过同步写入操作执行混合读写测试,确保数据直接写入磁盘。适用于更为真实的读写场景测试。


3. 网络压力测试工具

iperf3

  • 描述iperf3 是一个网络性能测试工具,支持测量网络带宽、延迟、抖动等指标,适合测试不同协议下的网络性能。

  • 安装

    bash 复制代码
    sudo apt-get install iperf3
  • 使用场景

    • TCP带宽测试

      bash 复制代码
      # 服务器端:
      iperf3 -s
      # 客户端:
      iperf3 -c <server_ip> -t 60

      该命令在服务器端启动iperf3监听,在客户端连接服务器并持续60秒的TCP带宽测试,适合用于评估网络带宽。

    • UDP带宽和延迟测试

      bash 复制代码
      iperf3 -c <server_ip> -u -b 10M -t 60

      该命令使用UDP协议测试带宽,目标带宽为10Mbps,持续时间为60秒。适合测试低延迟和丢包率环境中的网络性能。

    • 双向测试

      bash 复制代码
      iperf3 -c <server_ip> -t 60 --bidir

      该命令进行双向TCP带宽测试,持续60秒。适合用于对称网络的性能测试。

speedtest-cli

  • 描述speedtest-cli 是一个使用Speedtest.net的命令行工具,用于测量互联网连接的下载和上传速度。

  • 安装

    bash 复制代码
    sudo apt-get install speedtest-cli
  • 使用场景

    • 基本网速测试

      bash 复制代码
      speedtest-cli

      该命令通过默认服务器测量互联网连接的下载和上传速度,适合用于简单的网络性能测试。

    • 指定服务器测试

      bash 复制代码
      speedtest-cli --server 12345  

[root@localhost ~]# speedtest-cli --list

Retrieving speedtest.net configuration...

  1. China Telecom JiangSu 5G (Nanjing, China) [470.13 km]

  2. 浙江电信 (HangZhou, China) [643.82 km]

  3. 浙江电信 (NingBo, China) [697.07 km]

  4. Chief Telecom (Taoyuan, Taiwan) [1224.08 km]

  5. Chunghwa Mobile (Taipei, Taiwan) [1231.14 km]

  6. Homeplus (New Taipei, Taiwan) [1232.89 km]

  7. Yuan-Jhen Info (New Taipei, Taiwan) [1232.89 km]

  8. Taiwan Mobile (Banqiao District, Taiwan) [1232.98 km]

  9. SEEDNET (Taoyuan District, Taiwan) [1233.76 km]

  10. Homeplus (Shulin District, Taiwan) [1235.96 km]

```
12345代表可用测试服务器id。该命令使用指定服务器进行测试,可以选择距离更近的服务器或特定网络运营商的服务器。
  • 无图形输出测试

    bash 复制代码
    speedtest-cli --simple

    该命令提供简单的文本输出,显示ping值、下载速度和上传速度,适合在脚本中使用或快速查看结果。


4. CPU压力测试工具

stress-ng

  • 描述stress-ng 是一个功能强大的系统压力测试工具,比stress功能更丰富,支持各种子系统的压力测试,包括CPU、内存、I/O、网络等。

  • 安装

    bash 复制代码
    sudo apt-get install stress-ng
  • 使用场景

    • CPU压力测试

      bash 复制代码
      stress-ng --cpu 8 --timeout 60s

      该命令启动8个CPU负载线程,持续时间为60秒。适用于评估CPU在高负载下的表现。

    • 多子系统压力测试

      bash 复制代码
      stress-ng --cpu 4 --io 2 --vm 2 --vm-bytes 1G --timeout 120s

      该命令同时对CPU、I/O和内存施加压力,适合用于综合性系统性能评估。

    • 持久性测试

      bash 复制代码
      stress-ng --cpu 4 --vm 2 --vm-by

      该命令结合了CPU、内存和进程创建压力,持续时间为5分钟。适合用于长期稳定性测试。

相关推荐
Coder-thinking3 天前
QPS和TPS的区别简单理解
压力测试
测试界兮兮7 天前
我们怎么把自动化测试落地到一个项目上呢?
功能测试·程序人生·职场和发展·单元测试·压力测试
程序员威子10 天前
软件测试中的白盒测试,这些技巧你知道吗?
功能测试·测试工具·jmeter·单元测试·测试用例·压力测试·postman
天蓝蓝2352811 天前
压力测试知识总结
压力测试
hai4058711 天前
软件测试之压力测试知识总结
压力测试
代码小念12 天前
12道经典性能测试人员面试题
软件测试·压力测试
MJH82713 天前
如何防止常见的Web应用安全漏洞!
前端·自动化测试·软件测试·功能测试·单元测试·集成测试·压力测试
慧都小妮子13 天前
CrowdStrike 的失败如何凸显了左移测试的重要性
软件测试·单元测试·压力测试·parasoft
MJH82713 天前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·功能测试·测试工具·单元测试·压力测试·性能测试