阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用MySQL自带工具mysqlslap对数据库进行压力测试

124次阅读
没有评论

共计 4789 个字符,预计需要花费 12 分钟才能阅读完成。

MySQLslap 是 mysql 自带的工具,不需要单独安装:

参数:
-concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是 10、50、100 个并发。

–engines 代表要测试的引擎,可以有多个,用分隔符隔开。

–iterations 代表要运行这些测试多少次。

–auto-generate-sql 代表用系统自己生成的 SQL 脚本来测试。

–auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)

–number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数 / 并发数来计算。

–debug-info 代表要额外输出 CPU 以及内存的相关信息。

–number-int-cols:创建测试表的 int 型字段数量

–auto-generate-sql-add-autoincrement : 代表对生成的表自动添加 auto_increment 列,从 5.1.18 版本开始

–number-char-cols 创建测试表的 char 型字段数量。

–create-schema 测试的 schema,MySQL 中 schema 也就是 database。

–query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者 sql 语句来执行测试。

–only-print 如果只想打印看看 SQL 语句是什么,可以用这个选项。

1,简单用法

[root@linuxidc /home/aolens]# mysqlslap –user=root –password=password –auto-generate-sql
 
Benchmark
 
Average number of seconds to run all queries: 0.002 seconds
 
Minimum number of seconds to run all queries: 0.002 seconds
 
Maximum number of seconds to run all queries: 0.002 seconds
 
Number of clients running queries: 1
 
Average number of queries per client: 0

结果中各项含义:

Average number of … 运行所有语句的平均秒数

Minimum number of … 运行所有语句的最小秒数

Maximum number of … 运行所有语句的最大秒数

Number of clients … 客户端数量

Average number of queries per client 每个客户端运行查询的平均数

2,添加并发

[root@linuxidc /home/aolens]# mysqlslap –user=root –password=password –auto-generate-sql –concurrency=100 –number-of-queries=1000
Benchmark
Average number of seconds to run all queries: 0.316 seconds
Minimum number of seconds to run all queries: 0.316 seconds
Maximum number of seconds to run all queries: 0.316 seconds
Number of clients running queries: 100
Average number of queries per client: 10

3,使用自己测试库和测试语句

[root@linuxidc /home/aolens]# mysqlslap –user=root –password=password –concurrency=10 –number-of-queries=100 –create-schema=wordpress –query=”SELECT * FROM wordpress.wp_posts;”
Benchmark
Average number of seconds to run all queries: 4.255 seconds
Minimum number of seconds to run all queries: 4.255 seconds
Maximum number of seconds to run all queries: 4.255 seconds
Number of clients running queries: 10
Average number of queries per client: 10

4,结合实际,对网站首页所请求的数据库连接做压力测试
数据库 Mariadb 10.0.14

首先给数据库安装审计插件,并启用

MariaDB [(none)]> show variables like ‘%audit%’
-> ;
+——————————-+———————–+
| Variable_name | Value |
+——————————-+———————–+
| server_audit_events | |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_logging | OFF |
| server_audit_mode | 0 |
| server_audit_output_type | file |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+——————————-+———————–+
14 rows in set (0.00 sec)

发现已经安装了,没有安装的 MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME ‘server_audit.so’;

命令行启动审计功能:

命令行启用 audit,重启后失效

MariaDB [(none)]> set global server_audit_file_rotate_size=1024*1024*1024;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> set global server_audit_events=’query,table’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set global server_audit_file_rotate_now=on;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set global server_audit_logging=’ON’;
Query OK, 0 rows affected (0.00 sec)

刷新一下首页查看审计日志里都有哪些 SQL 操作,对这些 SQL 进行压测:

mysqlslap –user=root –password=password –concurrency=20 –number-of-queries=1000 –create-schema=wordpress –query=” \
SELECT option_name, option_value FROM wp_options WHERE autoload = ‘yes’; \
SELECT option_value FROM wp_options WHERE option_name = ‘a3_lz_google_api_key’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘a3_lz_google_api_key_enable’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘_transient_timeout_a3_lz_google_api_key_status’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘_transient_a3_lz_google_api_key_status’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘wordpress_api_key’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘onp_license_clipboard-images’ LIMIT 1; \
SELECT autoload FROM wp_options WHERE option_name = ‘onp_license_clipboard-images’; \
SELECT option_value FROM wp_options WHERE option_name = ‘onp_version_check_clipboard-images’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘ossdl_https’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘uninstall_plugins’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘a3_lazy_load_just_installed’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘akismet_comment_nonce’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘preload_cache_counter’ LIMIT 1; \
SELECT option_value FROM wp_options WHERE option_name = ‘rewrite_rules’ LIMIT 1; \
……”
Benchmark
Average number of seconds to run all queries: 40.931 seconds
Minimum number of seconds to run all queries: 40.931 seconds
Maximum number of seconds to run all queries: 40.931 seconds
Number of clients running queries: 20
Average number of queries per client: 50

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/141120.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计4789字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中