当前位置: 首页 > ds >正文

每天掌握一个Linux命令 - sysbench

Linux 性能测试工具 sysbench 使用指南

一、工具概述

sysbench 是一款基于 LuaJIT 的开源性能测试工具,主要用于评估 Linux 系统及数据库的性能。它支持对 CPU、内存、磁盘 I/O、线程调度、数据库(如 MySQL、PostgreSQL 等)进行基准测试,尤其适用于 OLTP(在线事务处理)场景。其特点包括:

  • 多维度测试:覆盖系统资源与数据库性能。
  • 灵活配置:通过参数调整测试负载、线程数、数据量等。
  • 轻量级:资源占用低,适合生产环境压测前的预演。
二、安装方式
1. 通过包管理器安装(推荐)
  • Ubuntu/Debian
    sudo apt update && sudo apt install sysbench
    
  • CentOS/RHEL
    sudo yum install epel-release && sudo yum install sysbench
    
  • Arch Linux
    sudo pacman -S sysbench
    
2. 源码编译安装
# 下载源码
wget https://github.com/akopytov/sysbench/archive/refs/tags/1.1.0.tar.gz
tar -zxvf 1.1.0.tar.gz && cd sysbench-1.1.0# 编译安装
./autogen.sh && ./configure && make && sudo make install
三、核心功能
测试类型功能描述
CPU 性能测试 CPU 的计算能力,支持质数运算、哈希计算等基准模型。
内存带宽/延迟评估内存的读写速度与访问延迟,支持顺序读写、随机读写测试。
磁盘 I/O测试磁盘的吞吐量与响应时间,支持随机读写、顺序读写、混合负载等场景。
线程调度验证多线程环境下的上下文切换性能,模拟高并发线程竞争场景。
数据库测试支持 MySQL、PostgreSQL 等数据库的 OLTP 测试,包括连接性能、事务处理能力等。
四、基础用法
1. CPU 性能测试
# 测试 CPU 计算能力(默认 10000 次质数运算,单线程)
sysbench cpu run# 自定义参数:线程数 4,运算次数 50000
sysbench cpu --threads=4 --cpu-max-prime=50000 run
2. 内存性能测试
# 顺序内存写入测试(1GB 数据)
sysbench memory --memory-block-size=1K --memory-total-size=1G --memory-test-mode=write run# 随机内存读写测试
sysbench memory --memory-test-mode=randrw run
3. 磁盘 I/O 测试
# 顺序写入测试(创建 10GB 文件,测试 30 秒)
sysbench disk --test=fileio --file-total-size=10G --file-test-mode=write --time=30 run# 随机读写混合测试(4KB 块大小,8 线程)
sysbench disk --test=fileio --file-block-size=4K --threads=8 --file-test-mode=randrw prepare
sysbench disk --test=fileio --threads=8 --file-test-mode=randrw run
sysbench disk --test=fileio cleanup  # 清理测试文件
五、进阶操作
1. 线程调度测试
# 模拟 10000 次线程切换,16 个线程竞争
sysbench threads --threads=16 --events=10000 run
2. MySQL 数据库测试(OLTP)
# 1. 安装 MySQL 驱动(需先安装 MySQL 开发库)
sudo apt install libmysqlclient-dev  # Ubuntu# 2. 创建测试数据库
mysql -e "CREATE DATABASE sysbench_test;"# 3. 准备测试数据(10 张表,每张表 10000 条记录)
sysbench oltp_read_write --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=your_password --mysql-db=sysbench_test --tables=10 --table-size=10000 prepare# 4. 执行压测(10 线程,持续 60 秒)
sysbench oltp_read_write --threads=10 --time=60 run# 5. 清理数据
sysbench oltp_read_write cleanup
3. 自定义 Lua 脚本测试

编写自定义测试脚本 custom_test.lua

require("sysbench")function event()-- 自定义测试逻辑(如网络请求、算法计算等)for i=1, 1000 do math.sqrt(i) end
endsysbench.run{threads = 4,events = 10000,main = event
}

执行测试:

sysbench custom_test.lua run
六、实战案例:测试 SSD 随机读写性能

目标:评估 SSD 在随机 4KB 块下的读写性能。
步骤

  1. 准备测试文件(10GB,模拟磁盘分区):
    sysbench disk --file-total-size=10G --file-name=/tmp/sysbench_test_file prepare
    
  2. 执行随机读写测试(8 线程,持续 60 秒):
    sysbench disk --test=fileio --file-block-size=4K --file-test-mode=randrw --threads=8 --time=60 run
    
  3. 关键结果分析:
    read, MB/s:   1200.5  # 读取吞吐量
    write, MB/s:  980.2   # 写入吞吐量
    average latency: 2.1ms # 平均延迟
    
  4. 清理测试文件:
    sysbench disk cleanup
    
七、注意事项
  1. 测试环境隔离:关闭无关进程,避免后台任务干扰测试结果。
  2. 数据量合理设置:磁盘测试时文件大小应大于物理内存,避免数据被缓存影响真实性。
  3. 数据库备份:压测前备份数据,避免因高负载导致服务异常或数据丢失。
  4. 版本兼容性:低版本 sysbench 可能不支持某些数据库驱动,建议使用 1.0 以上版本。
  5. 资源监控:结合 vmstatiostat 等工具同步观察系统资源使用情况。

通过 sysbench 可系统化地评估系统性能瓶颈,为服务器调优、架构设计提供数据支撑。实际使用中需根据场景灵活调整参数,并结合多轮测试取平均值以确保结果可靠。

http://www.xdnf.cn/news/9141.html

相关文章:

  • 【图像大模型】Stable Diffusion XL:下一代文本到图像生成模型的技术突破与实践指南
  • python fastapi统一捕获请求和响应
  • 七段码--dfs+set去重/状压
  • python训练营第35天
  • Axure动态面板学习笔记
  • React整合【ECharts】教程004:饼图的构建和基本设置
  • MySQL增删改查基础教程:熟练掌握DML语句操作【MySQL系列】
  • leetcode98.验证二叉搜索树:递归法中序遍历的递增性验证之道
  • GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【一】
  • 数字孪生文旅,如何颠覆传统旅游体验?
  • 在 Unity 中,AOT和JIT的区别
  • Java集合操作常见错误及规避方法
  • 菜鸟之路Day33一一Mybatis入门
  • halcon 图像预处理
  • 线程安全问题的成因
  • [Java实战]Spring Boot整合达梦数据库连接池配置(三十四)
  • AI智能分析网关V4室内消防逃生通道占用检测算法打造住宅/商业/工业园区等场景应用方案
  • TensorFlow 的基本概念和使用场景
  • C/C++---类型转换运算符
  • WireShark网络抓包—详细教程
  • TinyVue v3.23.0 正式发布:增加 NumberAnimation 数字动画组件、支持全局配置组件的 props
  • 深入解析操作系统内核与用户空间以及内核态与用户态转换
  • Prompt Tuning与自然语言微调对比解析
  • 视频存储开源方案
  • Jupyter Notebook 完全指南:从入门到高效使用
  • OpenFOAM 字典系统与求解器配置解析机制
  • ApplicationRunner接口和@PostConstruct注解
  • 如何选择自动化编程平台
  • 基于Android的个人健康管理系统APP
  • Python 爬虫入门