千家信息网

怎样进行mysql sysbench1.0.3 安装以及系统压力测试

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,今天就跟大家聊聊有关怎样进行mysql sysbench1.0.3 安装以及系统压力测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。针对系统
千家信息网最后更新 2025年12月03日怎样进行mysql sysbench1.0.3 安装以及系统压力测试

今天就跟大家聊聊有关怎样进行mysql sysbench1.0.3 安装以及系统压力测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

针对系统和数据库压测是项目上线前必做的一项,这里使用的是最新版本的sysbench做的压测使用详解。sysbench可以做系统层面的压力测试(CPU、内存、硬盘IO、互斥锁、Thead),也可以做数据库(MySQL/Oracle/PG)层面的压力测试。安装容易,操作便捷,是压测使用的重要工具之一。
一、sysbench下载
项目地址:https://launchpad.net/sysbench
下载地址:https://github.com/akopytov/sysbench/archive/1.0.3.tar.gz
二、sysbench安装
[root@DB_TEST tools]# tar -xzvf sysbench-1.0.3.tar.gz
[root@DB_TEST tools]# cd sysbench-1.0.3
[root@DB_TEST sysbench-1.0.3]# ./autogen.sh
[root@DB_TEST sysbench-1.0.3]#./configure --prefix=/usr/local/sysbench --with-mysql
[root@DB_TEST sysbench-1.0.3]# make
[root@DB_TEST sysbench-1.0.3]# make install
[root@DB_TEST sysbench-1.0.3]# cp -rp /usr/local/sysbench/bin/sysbench /usr/bin/
[root@DB_TEST sysbench-1.0.3]# /usr/local/sysbench/bin/sysbench --help
点击(此处)折叠或打开

  1. [root@BJ-133-22 sysbench-1.0.3]# /usr/local/sysbench/bin/sysbench --help

  2. Usage:

  3. sysbench [options]... [testname] [command]


  4. Commands implemented by most tests: prepare run cleanup help


  5. General options:

  6. --threads=N number of threads to use [1]

  7. --events=N limit for total number of events [0]

  8. --time=N limit for total execution time in seconds [10]

  9. --forced-shutdown=STRING number of seconds to wait after the --time limit before forcing shutdown, or 'off' to disable [off]

  10. --thread-stack-size=SIZE size of stack per thread [64K]

  11. --rate=N average transactions rate. 0 for unlimited rate [0]

  12. --report-interval=N periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]

  13. --report-checkpoints=[LIST,...] dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []

  14. --debug[=on|off] print more debugging info [off]

  15. --validate[=on|off] perform validation checks where possible [off]

  16. --help[=on|off] print help and exit [off]

  17. --version[=on|off] print version and exit [off]

  18. --config-file=FILENAME File containing command line options

  19. --tx-rate=N deprecated alias for --rate [0]

  20. --max-requests=N deprecated alias for --events [0]

  21. --max-time=N deprecated alias for --time [0]

  22. --num-threads=N deprecated alias for --threads [1]


  23. Pseudo-Random Numbers Generator options:

  24. --rand-type=STRING random numbers distribution {uniform,gaussian,special,pareto} [special]

  25. --rand-spec-iter=N number of iterations used for numbers generation [12]

  26. --rand-spec-pct=N percentage of values to be treated as 'special' (for special distribution) [1]

  27. --rand-spec-res=N percentage of 'special' values to use (for special distribution) [75]

  28. --rand-seed=N seed for random number generator. When 0, the current time is used as a RNG seed. [0]

  29. --rand-pareto-h=N parameter h for pareto distibution [0.2]


  30. Log options:

  31. --verbosity=N verbosity level {5 - debug, 0 - only critical messages} [3]


  32. --percentile=N percentile to calculate in latency statistics (1-100). Use the special value of 0 to disable percentile calculations [95]

  33. --histogram[=on|off] print latency histogram in report [off]


  34. General database options:


  35. --db-driver=STRING specifies database driver to use ('help' to get list of available drivers)

  36. --db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]

  37. --db-debug[=on|off] print database-specific debug information [off]



  38. Compiled-in database drivers:

  39. mysql - MySQL driver


  40. mysql options:

  41. --mysql-host=[LIST,...] MySQL server host [localhost]

  42. --mysql-port=[LIST,...] MySQL server port [3306]

  43. --mysql-socket=[LIST,...] MySQL socket

  44. --mysql-user=STRING MySQL user [sbtest]

  45. --mysql-password=STRING MySQL password []

  46. --mysql-db=STRING MySQL database name [sbtest]

  47. --mysql-ssl[=on|off] use SSL connections, if available in the client library [off]

  48. --mysql-ssl-cipher=STRING use specific cipher for SSL connections []

  49. --mysql-compression[=on|off] use compression, if available in the client library [off]

  50. --mysql-debug[=on|off] trace all client library calls [off]

  51. --mysql-ignore-errors=[LIST,...] list of errors to ignore, or "all" [1213,1020,1205]

  52. --mysql-dry-run[=on|off] Dry run, pretend that all MySQL client API calls are successful without executing them [off]


  53. Compiled-in tests:

  54. fileio - File I/O test

  55. cpu - CPU performance test

  56. memory - Memory functions speed test

  57. threads - Threads subsystem performance test

  58. mutex - Mutex performance test


  59. See 'sysbench help' for a list of options for each test.

三、sysbench使用
1、CPU性能测试

cpu性能测试:找范围内最大素数{时间越短越好}

cpu性能测试主要是根据素数的加法运算,这里指定最大素数(质数)为80000,--num-threads=`grep "processor" /proc/cpuinfo | wc -l`指定线程数,默认是1

/usr/local/sysbench/bin/sysbench --test=cpu --cpu-max-prime=80000 run

点击(此处)折叠或打开

  1. [root@db_test ~]# /usr/local/sysbench/bin/sysbench --test=cpu --cpu-max-prime=80000 run

  2. WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.

  3. sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)


  4. Running the test with following options:

  5. Number of threads: 1

  6. Initializing random number generator from current time



  7. Prime numbers limit: 80000


  8. Initializing worker threads...


  9. Threads started!



  10. General statistics:

  11. total time: 10.0057s

  12. total number of events: 520


  13. Latency (ms):

  14. min: 18.74

  15. avg: 19.24

  16. max: 19.39

  17. 95th percentile: 19.29

  18. sum: 10005.32


  19. Threads fairness:

  20. events (avg/stddev): 520.0000/0.00

  21. execution time (avg/stddev): 10.0053/0.00

实际环境CPU拷机压测脚本如下:

echo -e "进行CPU压力测试: 寻找小于1千万的最大质数,并发线程数10,最大请求数100 "

/usr/local/bin/sysbench --num-threads=10 --max-requests=100 --test=cpu --debug --cpu-max-prime=10000000 run


2、内存性能测试

sysbench 测试memory的时候是顺序读或写内存的。根据选项的不同,每次操作过程中,每个线程可以获取global或本地的数据块

内存:以不同块大小传输一定数量的数据吞吐量大小{越大越好}

点击(此处)折叠或打开

  1. [root@db_test fileio]# /usr/local/sysbench/bin/sysbench --test=memory help

  2. WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.

  3. sysbench 1..3 (using bundled LuaJIT 2.1.-beta2)


  4. memory options:

  5. --memory-block-size=SIZE size of memory block for test [1K] 测试时内存块大小

  6. --memory-total-size=SIZE total size of data to transfer [100G] 传输数据总大小

  7. --memory-scope=STRING memory access scope {global,local} [global] 内存访问范围

  8. --memory-hugetlb[=on|off] allocate memory from HugeTLB pool [off] 从 HugeTLB pool内存分配

  9. --memory-oper=STRING type of memory operations {read, write, none} [write] 内存操作类型

  10. --memory-access-mode=STRING memory access mode {seq,rnd} [seq] 存储器存取方式

示例:测试传输数据总量为5G,每个块大小是1K(一般设置是8K),连续读写的情况下,吞吐量3435.87 MiB/sec
[root@db_test fileio]# /usr/local/sysbench/bin/sysbench --test=memory --memory-block-size=1K --memory-total-size=5G run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeInitializing worker threads...

Threads started!

Operations performed: 5242880 (3518332.06 ops/sec)

5120.00 MiB transferred (3435.87 MiB/sec)General statistics:
total time: 1.4883s
total number of events: 5242880

Latency (ms):
min: 0.00
avg: 0.00
max: 0.03
95th percentile: 0.00
sum: 631.01

Threads fairness:
events (avg/stddev): 5242880.0000/0.00
execution time (avg/stddev): 0.6310/0.00

实际内存压力测试脚本:

echo -e "进行内存压力测试: 测试范围32G,并发线程数10,最大请求数100, 读 "

/usr/local/bin/sysbench --num-threads=10 --max-requests=100 --test=memory --memory-block-size=8K --memory-total-size=${MEM}G --memory-oper=read run

echo -e "进行内存压力测试: 测试范围32G,并发线程数10,最大请求数100, 写 "

/usr/local/bin/sysbench --num-threads=10 --max-requests=100 --test=memory --memory-block-size=8K --memory-total-size=${MEM}G --memory-oper=write run


3、磁盘IO性能测试

IO性能测试:不同场景下IOPS{越大越好}

点击(此处)折叠或打开

  1. [root@db_test sysbench-1.0.3]# /usr/local/sysbench/bin/sysbench --test=fileio help

  2. WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.

  3. sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)


  4. fileio options:

  5. --file-num=N number of files to create [128]

  6. --file-block-size=N block size to use in all IO operations [16384]

  7. --file-total-size=SIZE total size of files to create [2G]

  8. --file-test-mode=STRING test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}

  9. --file-io-mode=STRING file operations mode {sync,async,mmap} [sync]

  10. --file-async-backlog=N number of asynchronous operatons to queue per thread [128]

  11. --file-extra-flags=STRING additional flags to use on opening files {sync,dsync,direct} []

  12. --file-fsync-freq=N do fsync() after this number of requests (0 - don't use fsync()) [100]

  13. --file-fsync-all[=on|off] do fsync() after each write operation [off]

  14. --file-fsync-end[=on|off] do fsync() at the end of test [on]

  15. --file-fsync-mode=STRING which method to use for synchronization {fsync, fdatasync} [fsync]

  16. --file-merged-requests=N merge at most this number of IO requests if possible (0 - don't merge) [0]

  17. --file-rw-ratio=N reads/writes ratio for combined test [1.5]

--file-num=N 创建测试文件数量,默认是 [128]
--file-block-size=N 测试时文件块大小,默认是[16384],即16K
--file-total-size=SIZE 测试文件的总大小,默认是 [2G]
--file-test-mode=STRING 测试模式 {seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)}
--file-io-mode=STRING 文件操作模式{sync,async,mmap} [sync]
--file-extra-flags=STRING 使用额外的标志打开文件 {sync,dsync,direct} []
--file-fsync-freq=N 执行fsync()频率,0表示不使用,默认100
--file-fsync-all=[on|off] 每执行一次写操作执行一次fsync(),默认 [off]
--file-fsync-end=[on|off] 测试结束执行fsync(),默认 [on]
--file-fsync-mode=STRING 同步方法 {fsync, fdatasync} [fsync]
--file-merged-requests=N 如果可以,则合并IO请求数,默认0表示不合并
--file-rw-ratio=N 测试读写比例,默认[1.5]

seqwr 顺序写入
seqrewr 顺序重写
seqrd 顺序读取
rndrd 随机读取
rndwr 随机写入
rndrw 混合随机读/写

FileIO示例01:prepare 命令创建了128个文件总共大小为10G ,文件读写模式为随机读写混合方式。run 命令则进行测试,并返回结果,cleanup 删除测试产生的文件!
##Fileio准备工作,生成测试数据(最好比内存的2倍大)
[root@db_test fileio]# /usr/local/sysbench/bin/sysbench --num-threads=16 --test=fileio --file-total-size=10G --file-test-mode=rndrw prepare
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)

128 files, 81920Kb each, 10240Mb total
Creating files for the test...
Extra file open flags: 0
Creating file test_file.0
...
Creating file test_file.127
10737418240 bytes written in 9.96 seconds (1027.97 MiB/sec).
##正式执行FileIO测试
[root@db_test fileio]# /usr/local/sysbench/bin/sysbench --num-threads=16 --test=fileio --file-total-size=10G --file-test-mode=rndrw run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 16
Initializing random number generator from current timeExtra file open flags: 0
128 files, 80MiB each
10GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!File operations:
reads/s: 1449.16
writes/s: 965.91
fsyncs/s: 3083.55

Throughput:
read, MiB/s: 22.64
written, MiB/s: 15.09

General statistics:
total time: 10.4176s
total number of events: 57291

Latency (ms):
min: 0.00
avg: 2.87
max: 825.08
95th percentile: 0.17
sum: 164312.66

Threads fairness:
events (avg/stddev): 3580.6875/469.53
execution time (avg/stddev): 10.2695/0.08

IO密切相关的包括每秒请求数和总吞吐量,中请求数是(1449.16+965.91+3083.55)/s,吞吐量是(22.64+15.09)MB/s

##清理创建的文件
[root@db_test fileio]# /usr/local/sysbench/bin/sysbench --num-threads=16 --test=fileio --file-total-size=10G --file-test-mode=rndrw cleanup
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)

Removing test files...

实际环境FILEIO压力测试脚本:

echo -e "进行IO压力测试: 20个文件,每个10GB,随机读写 "

/usr/local/bin/sysbench --file-num=20 --num-threads=20 --test=fileio --file-total-size=${HDD}G --max-requests=1000000 --file-test-mode=rndrw prepare

/usr/local/bin/sysbench --file-num=20 --num-threads=20 --test=fileio --file-total-size=${HDD}G --max-requests=1000000 --file-test-mode=rndrw run

/usr/local/bin/sysbench --file-num=20 --num-threads=20 --test=fileio --file-total-size=${HDD}G --max-requests=1000000 --file-test-mode=rndrw cleanup

4、thread测试

线程调度:线程并发执行,循环响应信号量花费的时间{越少越好}
测试线程调度器的性能。对于高负载情况下测试线程调度器的行为非常有用

点击(此处)折叠或打开

  1. [root@db_test fileio]# /usr/local/sysbench/bin/sysbench --test=threads help

  2. WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.

  3. sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)


  4. threads options:

  5. --thread-yields=N number of yields to do per request [1000] 每个请求产生多少个线程,默认[4096]

  6. --mutex-locks=N number of mutex locks to do per thread [50000] 每个线程互斥锁的数量,默认 [50000]

  7. --mutex-loops=N number of empty loops to do inside mutex lock [10000] 内部互斥锁的空循环数量,默认 [10000]

所有线程同时执行,获取短时间的mutex lock,以便测试mutex的实现!

示例:
[root@db_test fileio]# /usr/local/sysbench/bin/sysbench --test=mutex --mutex-num=4096 --mutex-locks=50000 --mutex-loops=20000 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeInitializing worker threads...

Threads started!General statistics:
total time: 0.0021s
total number of events: 1

Latency (ms):
min: 2.05
avg: 2.05
max: 2.05
95th percentile: 2.03
sum: 2.05

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.0020/0.00

看完上述内容,你们对怎样进行mysql sysbench1.0.3 安装以及系统压力测试有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

测试 内存 线程 压力 文件 大小 性能 数据 顺序 最大 系统 吞吐量 数量 范围 越好 吞吐 不同 内容 实际 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发好还是制造好 互联网和黑科技材料的汇编 软件开发入职不签劳动合同 甘肃亦念互联网科技有限公司 江苏特色软件开发框架 计算机网络技术及应用简介 网络安全是哪个国家提出的 怎么设教学数据库三个关系 软件开发 介绍人 提成比例 江西微商系统软件开发 大学生网络安全 天津网络技术开发创新服务 软科学研究网络安全 服务器哪些端口可以使用 新疆公安厅网络安全保卫总队 如何攻击学校服务器 怎么看全国大学生网络安全证书 天津升腾服务器价格 保定天气预报软件开发 数据库服务器管理证书图片 学习数据库管理系统意义 山东省大数据网络安全实验室 合肥软件开发培训达内 服务器启动出现红字 林子雨数据库实验室 中国高等植物红色名录数据库 合作获取数据库中的最大值 交管学习加减分服务器异常怎么办 为什么命令窗口打不开数据库 注册个体户网络技术中心
0