目录
Sysbench 基准压测 my.cnf
一、Sysench测试前准备
1.1、压测环境
主机 | Dell PowerEdge R730xd |
CPU | 24 * Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz |
内存 | 64G (16G * 4) |
RAID | RAID1 |
硬盘 | 7.2K RPM, 6000G SAS, 12G/s |
文件系统 | ext4 |
系统 | Red Hat Enterprise Linux Server release 7.3 (Maipo) |
内核 | 3.10.0-514.el7.x86_64 |
MySQL | MySQL5.7.18 |
Sysbench | 1.1.0-0167e45 |
1.2、压测基准值
每张表初始化的数据数量 | 10,000,000 |
测试表数 | 16 |
测试脚本 | oltp_update_index.lua、oltp_update_non_index.lua |
run time(秒) | 3600 |
最大请求数 | 100,000,000 |
并发线程数 | 8 - 256 |
生成数据量 | 127.56G |
二、进行OLTP_update测试
2.1、安装压测工具sysbench
- 标准安装
[root@localhost-m(252) /r2/soft/dbtest] curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash &&
sudo yum -y install sysbench
- Test 脚本
SVN地址:http://svn1.ipanel.cn:18080/svn/DBA/document/数据库压测/mysql_oltp_sysbench.sh
2.2、执行压测
- 依据测试环境修改脚本的mysql参数和sysbench参数,然后执行
- 注意:脚本会把执行结果写入到dbtest库下面的sysbench_test表里
Usage: ./sysbench_t1.sh test (test_scenario) (test_type) (mysql_host) (mysql_port) (mysql_user) (mysql_password)
./sysbench_t1.sh analyse
./sysbench_t1.sh chart [scenario]...
----------
测试: 子命令test
test_scenario: 自定义的测试场景名
test_type: read-only 或 read-write, 表示测试模式
其余4参数表示待测试MySQL连接相关信息,密码若包含特殊字符,将其置于单引号内
----------
分析: 子命令analyse
----------
画图: 子命令chart
会在/tmp/下生成request_per_second.png transactions_per_second.png 95_pct_time.png 三张图
chart (对分析结果中的所有测试场景画图)
chart scenario ... (对指定的测试场景画图,场景名依据先前自定义的名称)
[root@localhost-m(252) /r2/soft]# ll /usr/local/sysbench/share/sysbench/
total 64
-rwxr-xr-x 1 root root 1452 11月 2 17:14 bulk_insert.lua
-rw-r--r-- 1 root root 13918 11月 2 17:14 oltp_common.lua
-rwxr-xr-x 1 root root 1290 11月 2 17:14 oltp_delete.lua
-rwxr-xr-x 1 root root 2415 11月 2 17:14 oltp_insert.lua
-rwxr-xr-x 1 root root 1265 11月 2 17:14 oltp_point_select.lua
-rwxr-xr-x 1 root root 1649 11月 2 17:14 oltp_read_only.lua
-rwxr-xr-x 1 root root 1824 11月 2 17:14 oltp_read_write.lua
-rwxr-xr-x 1 root root 1118 11月 2 17:14 oltp_update_index.lua
-rwxr-xr-x 1 root root 1127 11月 2 17:14 oltp_update_non_index.lua
-rwxr-xr-x 1 root root 1440 11月 2 17:14 oltp_write_only.lua
-rwxr-xr-x 1 root root 1919 11月 2 17:14 select_random_points.lua
-rwxr-xr-x 1 root root 2118 11月 2 17:14 select_random_ranges.lua
drwxr-xr-x 4 root root 4096 11月 2 17:14 tests
[root@localhost-m(252) /r2/soft]# nohup ./mysql_oltp_sysbench.sh test scenario_oltp_update_non_index read-write localhost 3306 gcdb 'iforgot' &
[root@localhost-m(252) /r2/soft]# tail -f /tmp/mysql_oltp.log
[ 10s ] thds: 192 tps: 255.30 qps: 255.30 (r/w/o: 0.00/255.30/0.00) lat (ms,95%): 2728.81 err/s: 0.00 reconn/s: 0.00
三、执行结果
3.1 sysbench 执行结果
SQL statistics:
queries performed:
read: 0
write: 367252 --写总数
other: 0
total: 367252
transactions: 367252 (203.97 per sec.) -- 总事务数(每秒事务数)
queries: 367252 (203.97 per sec.) -- 读写务数(每秒事务数)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
Throughput:
events/s (eps): 203.9661 --每秒事务数
time elapsed: 1800.5544s --总耗时
total number of events: 367252 --总事务数
Latency (ms):
min: 0.12 --最小耗时
avg: 470.60 --平均耗时
max: 48410.54 --最大耗时
95th percentile: 846.57 --超过95%平均耗时
sum: 172829974.82 --总耗时
Threads fairness:
events (avg/stddev): 3825.5417/76.81 --事件(平均值/偏差)
execution time (avg/stddev): 1800.3122/0.10 --执行时间(平均值/偏差)
3.2 查看脚本执行记录
- 查询dbtest.sysbench_test表
mysql> SELECT scenario,sb_threads,server_load,request_read,request_write,transactions_per_second,request_per_second,95_pct_time FROM dbtest.sysbench_test;
+--------------------------------+------------+-------------+--------------+---------------+-------------------------+--------------------+-------------+
| scenario | sb_threads | server_load | request_read | request_write | transactions_per_second | request_per_second | 95_pct_time |
+--------------------------------+------------+-------------+--------------+---------------+-------------------------+--------------------+-------------+
| scenario_oltp_update_index | 24 | 13.35 | 0 | 745072 | 413.84 | 413.84 | 277.21 |
| scenario_oltp_update_index | 32 | 7.81 | 0 | 249685 | 138.69 | 138.69 | 493.24 |
| scenario_oltp_update_index | 64 | 8.20 | 0 | 333937 | 185.50 | 185.50 | 733.00 |
| scenario_oltp_update_index | 96 | 20.03 | 0 | 343386 | 190.69 | 190.69 | 1032.01 |
| scenario_oltp_update_index | 128 | 6.72 | 0 | 326057 | 177.64 | 177.64 | 1479.41 |
| scenario_oltp_update_index | 160 | 7.23 | 0 | 342488 | 187.00 | 187.00 | 1869.60 |
| scenario_oltp_update_index | 192 | 9.93 | 0 | 331669 | 184.15 | 184.15 | 2493.86 |
| scenario_oltp_update_index | 256 | 6.63 | 0 | 322515 | 177.02 | 177.02 | 2680.11 |
| scenario_oltp_update_non_index | 24 | 24.78 | 0 | 1003021 | 557.19 | 557.19 | 189.93 |
| scenario_oltp_update_non_index | 32 | 17.21 | 0 | 547258 | 303.78 | 303.78 | 601.29 |
| scenario_oltp_update_non_index | 64 | 27.47 | 0 | 454084 | 251.93 | 251.93 | 1618.78 |
| scenario_oltp_update_non_index | 96 | 18.86 | 0 | 452345 | 250.91 | 250.91 | 2120.76 |
| scenario_oltp_update_non_index | 128 | 16.62 | 0 | 437129 | 242.45 | 242.45 | 2778.39 |
| scenario_oltp_update_non_index | 160 | 22.01 | 0 | 421289 | 233.70 | 233.70 | 3511.19 |
| scenario_oltp_update_non_index | 192 | 16.81 | 0 | 398962 | 221.19 | 221.19 | 4358.09 |
| scenario_oltp_update_non_index | 256 | 18.24 | 0 | 407225 | 225.80 | 225.80 | 5813.24 |
| scenario_oltp_update_non_index | 24 | 16.45 | 0 | 406238 | 225.59 | 225.59 | 746.32 |
| scenario_oltp_update_non_index | 32 | 16.82 | 0 | 419489 | 232.93 | 232.93 | 1032.01 |
| scenario_oltp_update_non_index | 64 | 23.02 | 0 | 426404 | 236.83 | 236.83 | 1836.24 |
| scenario_oltp_update_non_index | 96 | 20.04 | 0 | 457630 | 253.94 | 253.94 | 2045.74 |
| scenario_oltp_update_non_index | 128 | 24.04 | 0 | 460669 | 255.80 | 255.80 | 2632.28 |
| scenario_oltp_update_non_index | 160 | 21.59 | 0 | 454371 | 252.04 | 252.04 | 3267.19 |
| scenario_oltp_update_non_index | 192 | 18.05 | 0 | 450096 | 249.65 | 249.65 | 3911.79 |
| scenario_oltp_update_non_index | 256 | 19.35 | 0 | 437986 | 243.02 | 243.02 | 5507.54 |
| scenario_oltp_update_non_index | 24 | 15.51 | 0 | 427093 | 237.23 | 237.23 | 733.00 |
| scenario_oltp_update_non_index | 32 | 17.80 | 0 | 433449 | 240.72 | 240.72 | 977.74 |
| scenario_oltp_update_non_index | 64 | 17.65 | 0 | 432506 | 240.08 | 240.08 | 1803.47 |
| scenario_oltp_update_non_index | 96 | 18.55 | 0 | 426209 | 236.44 | 236.44 | 2279.14 |
| scenario_oltp_update_non_index | 128 | 17.06 | 0 | 415146 | 230.27 | 230.27 | 2880.27 |
| scenario_oltp_update_non_index | 160 | 19.04 | 0 | 416016 | 230.63 | 230.63 | 3511.19 |
| scenario_oltp_update_non_index | 192 | 19.73 | 0 | 411943 | 228.56 | 228.56 | 4280.32 |
| scenario_oltp_update_non_index | 256 | 17.48 | 0 | 418163 | 231.88 | 231.88 | 5709.50 |
| scenario_oltp_update_index | 24 | 11.59 | 0 | 490759 | 272.63 | 272.63 | 411.96 |
| scenario_oltp_update_index | 32 | 21.27 | 0 | 560223 | 311.19 | 311.19 | 458.96 |
| scenario_oltp_update_index | 64 | 29.03 | 0 | 357102 | 198.36 | 198.36 | 601.29 |
| scenario_oltp_update_index | 96 | 19.62 | 0 | 403699 | 222.30 | 222.30 | 846.57 |
| scenario_oltp_update_index | 128 | 15.11 | 0 | 380223 | 211.14 | 211.14 | 1170.65 |
| scenario_oltp_update_index | 160 | 16.88 | 0 | 391103 | 216.96 | 216.96 | 1506.29 |
| scenario_oltp_update_index | 192 | 8.91 | 0 | 378316 | 209.84 | 209.84 | 2045.74 |
| scenario_oltp_update_index | 256 | 8.18 | 0 | 377455 | 206.79 | 206.79 | 2932.60 |
| scenario_oltp_update_index | 24 | 8.76 | 0 | 375782 | 208.75 | 208.75 | 257.95 |
| scenario_oltp_update_index | 32 | 5.58 | 0 | 356393 | 197.99 | 197.99 | 356.70 |
| scenario_oltp_update_index | 64 | 5.52 | 0 | 377180 | 205.27 | 205.27 | 559.50 |
| scenario_oltp_update_index | 96 | 8.48 | 0 | 367252 | 203.97 | 203.97 | 846.57 |
| scenario_oltp_update_index | 128 | 11.43 | 0 | 374881 | 205.08 | 205.08 | 1149.76 |
| scenario_oltp_update_index | 160 | 9.46 | 0 | 366998 | 200.27 | 200.27 | 1618.78 |
| scenario_oltp_update_index | 192 | 5.50 | 0 | 351154 | 194.18 | 194.18 | 2159.29 |
| scenario_oltp_update_index | 256 | 11.49 | 0 | 367447 | 202.42 | 202.42 | 2449.36 |
+--------------------------------+------------+-------------+--------------+---------------+-------------------------+--------------------+-------------+
3.3 最后一次压测MySQL各种状态
- CPU MEM
- IO
- 线程数和update
- Innodb buffer
3.4 统计三次循环压测结果并画图
3.5 测试结果
- 当线程并发到32个时TPS在208左右,事务95%的平均耗时也在不断攀升,在线程数达并发到64个时候,耗时在1000ms以上即1s,系统不可以用
- oltp_update_index.lua模式下压测,update语句/每秒平均为197个
四、关于测试后的分析和建议
4.1、本次进行两种模式模式压测分别为oltp_update_non_index.lua(无索引更新)和oltp_update_index.lua(索引更新);从上面io和cpu图知道,执行并发24线程压测是CPU负载上升但并未达到瓶颈,innodb buffer 使用 8G,但是IO使用率100%并出现io延迟
- 4.2、建议:
- /r2目录所在磁盘(RAID1 SAS 7.2K 3.5 12G/s 6T), RAID组进行升级,建议部署(RADI10 1T sas 15K )