zoukankan      html  css  js  c++  java
  • (转)用mysql自带工具mysqlslap对数据库进行压力测试

    http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试

    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,简单用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@Linux_Aolens_01 /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,添加并发

    1
    2
    3
    4
    5
    6
    7
    [root@Linux_Aolens_01 /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,使用自己测试库和测试语句

    1
    2
    3
    4
    5
    6
    7
    [root@Linux_Aolens_01 /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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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 ,重启后失效

    1
    2
    3
    4
    5
    6
    7
    8
    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进行压测:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    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
  • 相关阅读:
    min-width和width的区别
    组装电脑
    css背景透明,文字不透明
    三十九、前端基础之HTML
    三十八、事务、mysql索引,视图
    三十七、python操作mysql,和navicat
    三十六、单表与多表查询
    三十五、表与表之间的关系
    三十四、字段类型
    三十三、初识数据库及简单命令
  • 原文地址:https://www.cnblogs.com/liujiacai/p/7767242.html
Copyright © 2011-2022 走看看