为什么mysqlslap 压力测试的命令中--debug-info参数没有把CPU和内存信息打印出来。

mysqlslap对MySQL进行压力测试 - jiake - ITeye技术网站
博客分类:
MySQL5.1地的确提供了好多有力的工具来帮助我们DBA进行数据库管理。
现在看一下这个压力测试工具mysqlslap
关于他的选项手册上以及--help介绍的很详细。
我解释一下一些常用的选项。
--concurrency 并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符。
--engines 代表要测试的引擎,可以有多个,用分隔符隔开。
--iterations 代表要运行这些测试多少次。
--auto-generate-sql 代表用系统自己生成的SQL脚本来测试。
--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed(默认))
--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。比如倒数第二个结果2=200/100。
--debug-info 代表要输出一些调试相关信息。
--number-int-cols 自动生成的测试表中包含多少个数字类型的列,默认1。
--number-char-cols 自动生成的测试表中包含多少个字符类型的列,默认1。
--create-schema
测试的schema,MySQL中schema也就是database。
--query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
--only-print 如果只想打印看看SQL语句是什么,可以用这个选项。
–commint=N
多少条DML后提交一次。
–compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
–detach=N 执行N条语句后断开重连。
现在来看一些我测试的例子。
1、用自带的SQL脚本来测试。
MySQL版本为5.1.23
[root@localhost ~]# mysqlslap --defaults-file=/usr/local/mysql-f --concurrency=50,100,200 --iterations=1 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --debug-info -uroot -p1 -S/tmp/mysql_3310.sock
Running for engine myisam
Average number of seconds to run all queries: 0.063 seconds
Minimum number of seconds to run all queries: 0.063 seconds
Maximum number of seconds to run all queries: 0.063 second
Number of clients running queries: 50
Average number of queries per client: 4
Running for engine myisam
Average number of seconds to run all queries: 0.070 seconds
Minimum number of seconds to run all queries: 0.070 seconds
Maximum number of seconds to run all queries: 0.070 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Running for engine myisam
Average number of seconds to run all queries: 0.092 seconds
Minimum number of seconds to run all queries: 0.092 seconds
Maximum number of seconds to run all queries: 0.092 seconds
Number of clients running queries: 200
Average number of queries per client:
Running for engine innodb
Average number of seconds to run all queries: 0.115 seconds
Minimum number of seconds to run all queries: 0.115 seconds
Maximum number of seconds to run all queries: 0.115 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Running for engine innodb
Average number of seconds to run all queries: 0.134 seconds
Minimum number of seconds to run all queries: 0.134 seconds
Maximum number of seconds to run all queries: 0.134 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Running for engine innodb
Average number of seconds to run all queries: 0.192 seconds
Minimum number of seconds to run all queries: 0.192 seconds
Maximum number of seconds to run all queries: 0.192 seconds
Number of clients running queries: 200
Average number of queries per client: 1
User time 0.06, System time 0.15
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 5803, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 8173, Involuntary context switches 528
我来解释一下结果的含义。
拿每个引擎最后一个Benchmark示例。
对于INNODB引擎,200个客户端同时运行这些SQL语句平均要花0.192秒。相应的MYISAM为0.092秒。
2、用我们自己定义的SQL 脚本来测试。
这些数据在另外一个MySQL实例上。版本为5.0.45
先看一下这两个表的相关数据。
1)、总记录数。
mysql& select table_rows as rows from information_schema.tables where table_schema='t_girl' and table_name='article';
+--------+
+--------+
| 296693 |
+--------+
1 row in set (0.01 sec)
mysql& select table_rows as rows from information_schema.tables where table_schema='t_girl' and table_name='category';
1 row in set (0.00 sec)
2)、总列数。
mysql& select count(*) as column_total from information_schema.columns where table_schema = 't_girl' and table_name = 'article';
+--------------+
| column_total |
+--------------+
+--------------+
1 row in set (0.01 sec)
mysql& select count(*) as column_total from information_schema.columns where table_schema = 't_girl' and table_name = 'category';
+--------------+
| column_total |
+--------------+
+--------------+
1 row in set (0.01 sec)
3)、调用的存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `t_girl`.`sp_get_article`$$
CREATE DEFINER=`root`@`%` PROCEDURE `sp_get_article`(IN f_category_id int,
IN f_page_size int, IN f_page_no int
set @stmt = 'select a.* from article as a inner join ';
set @stmt = concat(@stmt,'(select a.aid from article as a ');
if f_category_id != 0 then
set @stmt = concat(@stmt,' inner join (select cid from category where cid = ',f_category_id,' or parent_id = ',f_category_id,') as b on a.category_id = b.cid');
if f_page_size &0 && f_page_no & 0 then
set @stmt = concat(@stmt,' limit ',(f_page_no-1)*f_page_size,',',f_page_size);
set @stmt = concat(@stmt,') as b on (a.aid = b.aid)');
prepare s1 from @
execute s1;
deallocate prepare s1;
set @stmt = NULL;
DELIMITER ;
4)、我们用mysqlslap来测试
以下得这个例子代表用mysqlslap来测试并发数为25,50,100的调用存储过程,并且总共调用5000次。
[root@localhost ~]# mysqlslap --defaults-file=/usr/local/mysql-f --concurrency=25,50,100 --iterations=1 --query='call t_girl.sp_get_article(2,10,1);' --number-of-queries=5000 --debug-info -uroot -p -S/tmp/mysql50.sock
Enter password:
Average number of seconds to run all queries: 3.507 seconds
Minimum number of seconds to run all queries: 3.507 seconds
Maximum number of seconds to run all queries: 3.507 seconds
Number of clients running queries: 25
Average number of queries per client: 200
平均每个并发运行200个查询用了3.507秒。
Average number of seconds to run all queries: 3.742 seconds
Minimum number of seconds to run all queries: 3.742 seconds
Maximum number of seconds to run all queries: 3.742 seconds
Number of clients running queries: 50
Average number of queries per client: 100
Average number of seconds to run all queries: 3.697 seconds
Minimum number of seconds to run all queries: 3.697 seconds
Maximum number of seconds to run all queries: 3.697 seconds
Number of clients running queries: 100
Average number of queries per client: 50
User time 0.87, System time 0.33
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 1877, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 27218, Involuntary context switches 3100
看一下SHOW PROCESSLIST 结果
+------+------+--------------------+--------------------+---------+-------+--------------------+------------------------------------------------------------------------------------------------------+
| User | Host
| Command | Time | State
+------+------+--------------------+--------------------+---------+-------+--------------------+------------------------------------------------------------------------------------------------------+
|3177 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3178 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3179 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3181 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3180 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3182 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3183 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3187 | root | %
0| removing tmp table | select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3186 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3194 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3203 | root | %
| deallocate prepares1
|3221 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3222 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3223 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3224 | root | %
0| removing tmp table | select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3225 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
|3226 | root | %
| select a.* from article as a inner join (selecta.aid from article as a
inner join (select cid from |
+------+------+--------------------+--------------------+---------+-------+--------------------+------------------------------------------------------------------------------------------------------+
rows in set (0.00 sec)
上面的测试语句其实也可以这样写
[root@localhost ~]# mysqlslap --defaults-file=/usr/local/mysql-f --concurrency=25,50,100 --iterations=1 --create-schema='t_girl' --query='call sp_get_article(2,10,1);' --number-of-queries=5000 --debug-info -uroot -p -S/tmp/mysql50.sock
小总结一下。
mysqlslap对于模拟多个用户同时对MySQL发起“进攻”提供了方便。同时详细的提供了“高负荷攻击MySQL”的详细数据报告。
而且如果你想对于多个引擎的性能。这个工具再好不过了。
浏览: 542645 次
来自: 西安
[mysqld]下面的字符集设置有错误。应该是characte ...
没有DateFormatUtil,
Cannot complete the install bec ...
现在已经被淘汰了Mysqlslap MySQL压力测试工具 简单教程,MySQL教程,MySQL案例,MySQL实例
本站中文域名:、 
        
     
 |  |  |  |  
     |     |     |   
您的位置: &&
&& Mysqlslap MySQL压力测试工具 简单教程
Mysqlslap MySQL压力测试工具 简单教程
<PS从5.1.4版开一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单&。通过mysqlslap Chelp可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册&。
<PS从5.1.4版开一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单&。通过mysqlslap Chelp可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册&。复制代码 代码如下:Cauto-generate-sql, -a 自动生成测试表和数据 Cauto-generate-sql-load-type=type 测试语句的类型&。取值包括:read,key,write,update和mixed(默认)&。 Cnumber-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1 Cnumber-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1 Cnumber-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数) Cquery=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试&。 Ccreate-schema 测试的schema,MySQL中schema也就是database Ccommint=N 多少条DML后提交一次 Ccompress, -C 如果服务器和客户端支持都压缩,则压缩信息传递 Cconcurrency=N, -c N 并发量,也就是模拟多少个客户端同时执行select&。可指定多个值,以逗号或者Cdelimiter参数指定的值做为分隔符 Cengine=engine_name, -e engine_name 创建测试表所使用的存储引擎,可指定多个 Citerations=N, -i N 测试执行的迭代次数 Cdetach=N 执行N条语句后断开重连 Cdebug-info, -T 打印内存和CPU的信息 Conly-print 只打印测试语句而不实际执行它的使用语法如下: shell&/usr/local/mysql/bin/mysqlslap [options] 常用参数【options】详细介绍: --concurrency代表并发数量,多个可以用逗号隔开&。例如:--concurrency=50,200,500 --engines代表要测试的引擎,可以有多个,用分隔符隔开&。例如:--engines=myisam,innodb,memory --iterations代表要在不同并发环境下,各自运行测试多少次&。 --auto-generate-sql 代表用mysqlslap工具自己生成的SQL脚本来测试并发压力&。 --auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始, --auto-generate-sql-load-type 代表要测试的环境是读操作还是写操作还是两者混合的(read,write,update,mixed) --number-of-queries 代表总共要运行多少条查询&。 --debug-info 代表要额外输出CPU以及内存的相关信息&。 --number-int-cols 代表示例表中的INTEGER类型的属性有几个&。 --number-char-cols代表示例表中的vachar类型的属性有几个&。 --create-schema 代表自定义的测试库名称&。 --query 代表自定义的测试SQL脚本&。 说明: 测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除&。可以用-only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹&。 实验步骤: 练习一: 单线程测试&。测试做了什么&。 &./bin/mysqlslap -a -uroot -p111111 多线程测试&。使用--concurrency来模拟并发连接&。 & ./bin/mysqlslap -a -c 100 -uroot -p111111 迭代测试&。用于需要多次执行测试得到平均值&。 & ./bin/mysqlslap -a -i 10 -uroot -p111111 练习二: & ./bin/mysqlslap -auto-generate-sql-add-autoincrement -a -uroot -p111111 & ./bin/mysqlslap -a -auto-generate-sql-load-type=read -uroot -p111111 & ./bin/mysqlslap -a -auto-generate-secondary-indexes=3 -uroot -p111111 & ./bin/mysqlslap -a -auto-generate-sql-write-number=1000 -uroot -p111111 & ./bin/mysqlslap --create-schema world -q "select count(*) from City" -uroot -p111111 & ./bin/mysqlslap -a -e innodb -uroot -p111111 & ./bin/mysqlslap -a --number-of-queries=10 -uroot -p111111 练习三: 执行一次测试,分别50和100个并发,执行1000次总查询: & ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p111111 50和100个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长&。为了准确起见,可以多迭代测试几次: & ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p111111 测试同时不同的存储引擎的性能进行对比: &./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p111111
Google搜索中
搜狗搜索中
在线教程导航
数据库开发
产品库推荐
| 站长工具:
All Rights Reserved.
珠江路在线版权所有
苏ICP备号 中文域名:
 |  | 转自:http://blog.csdn.net/lxpbs8851/article/details/8131532
redis 127.0.0.1:6381& info
redis_version:2.4.16 # Redis 的版本
redis_git_sha1:
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.1.2 #gcc版本号
process_id:10629 # 当前 Redis 服务器进程id
uptime_in_seconds:145830 # 运行时间(秒)
uptime_in_days:1 # 运行时间(天)
lru_clock:947459
used_cpu_sys:0.02
used_cpu_user:0.02
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1 # 连接的客户端数量
connected_slaves:0 # slave的数量
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:832784 # Redis 分配的内存总量
used_memory_human:813.27K
used_memory_rss:1896448 # Redis 分配的内存总量(包括内存碎片)
used_memory_peak:832760
used_memory_peak_human:813.24K #Redis所用内存的高峰值
mem_fragmentation_ratio:2.28 # 内存碎片比率
mem_allocator:jemalloc-3.0.0
aof_enabled:0 #redis是否开启了aof
changes_since_last_save:0 # 上次保存数据库之后,执行命令的次数
bgsave_in_progress:0 # 后台进行中的 save 操作的数量
last_save_time: # 最后一次成功保存的时间点,以 UNIX 时间戳格式显示
bgrewriteaof_in_progress:0 # 后台进行中的 aof 文件修改操作的数量
total_connections_received:1 # 运行以来连接过的客户端的总数量
total_commands_processed:1 # 运行以来执行过的命令的总数量
expired_keys:0 # 运行以来过期的 key 的数量
evicted_keys:0 #运行以来删除过的key的数量
keyspace_hits:0 # 命中 key 的次数
keyspace_misses:0 # 不命中 key 的次数
pubsub_channels:0 # 当前使用中的频道数量
pubsub_patterns:0 # 当前使用的模式的数量
latest_fork_usec:0
vm_enabled:0 # 是否开启了 vm (1开启 0不开启)
role:master #当前实例的角色master还是slave
db0:keys=183,expires=0 # 各个数据库的 key 的数量,以及带有生存期的 key 的数量
相关 [redis info 命令] 推荐:
- 研发管理 - ITeye博客
转自:http://blog.csdn.net/lxpbs8851/article/details/8131532. redis_version:2.4.16 # Redis 的版本. gcc_version:4.1.2 #gcc版本号. process_id:10629 # 当前 Redis 服务器进程id.
- idea's blog
LevelDB 服务器 SSDB 支持主从(master-slave)同步了!. SSDB – 支持 zset 的 LevelDB 服务器. SSDB 已经支持在线备份功能!. 在PHP代码中使用LevelDB. SSDB 解决了 Snappy 导致 LevelDB 编译失败的问题. Linode VPS - 美国虚拟主机.
- Adam - NoSQLFan
推荐一个Redis命令说明的中文翻译版本,由huangz同学翻译完成,下面是huangz同学的介绍. Redis命令参考中文版,翻译自Redis Command Reference. 全文共分为十个部分,其中主要的六个部分(Key、String、Hash、List、Set、SortedSet)的所有命令已经翻译完毕,剩余的四个部分(Pub/Sub、Transactions、Connection、Server)还有待日后跟进.
据新浪微博&王自如TechMessager&报道“看来iphone 4s的名字已经基本确定了,iTunes 的info文件当中已经发现了iphone 4s的名字,而且不会是全新设计,基本上是老的4代出8g版本继续卖,新的4s版本采用CDMA版本的天线设计,亮点在于同时支持g网与c网.
- ITeye资讯频道
redis-monitor是一个Web可视化的 redis 监控程序. 使用 Flask 来开发的,代码结构非常简单,适合移植到公司内网使用. redis 服务器信息,包括 redis 版本、上线时间、 os 系统信息等等. 实时的消息处理信息,例如处理 command 数量、连接总数量等. 内存占用、 cpu 消耗实时动态图表.
- 博客园_首页
Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章:. Redis是一个key-value存储系统. 和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型.
- 谁主沉浮
# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写). # 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB. # daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes. # 当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址.
- Tim[后端技术]
最近用Cassandra的又逐渐多了,除了之前的360案例,在月初的QCon Shanghai 2013 篱笆网也介绍了其使用案例. 而这篇
百万用户时尚分享网站feed系统扩展实践文章则提到了Fashiolista和Instagram从Redis迁移到Cassandra的案例. 考虑到到目前仍然有不少网友在讨论Redis的用法问题,Redis是一个数据库、内存、还是Key value store?以及Redis和memcache在实际场景的抉择问题,因此简单谈下相关区别.
- CSDN博客云计算推荐文章
一、单机部署
tar xvf redis-2.6.16.tar.gz
cd redis-2.6.16
make PREFIX=/usr/local/redis install
#指定安装目录为/usr/local/redis,默认安装安装到/usr/local/bin. # chkconfig:
#添加redhat系列操作系统平台,开机启动需求项(运行级别,开机时服务启动顺序、关机时服务关闭顺序)
# description:
Starts, stops redis server.
- 数据库 - ITeye博客
传统MySQL+ Memcached架构遇到的问题.   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:.   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。深入理解debuginfo_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
深入理解debuginfo
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 mysqlslap 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信