原本打算用mysql自带的mysqlslap做压力测试,可惜这工具不给力,可控制的地方不多,尤其不能够产生随机的测试语句。遂改用super smack。貌似它风评还不错。
安装
1.从网上下载tar.gz的安装包。http://vegan.net/tony/supersmack/ 我下载到的最新版本是1.3。
2.解压后运行./configure; make; make install
./configure的时候有些参数值得注意:
a) --with-mysql (支持mysql)
b) --with-pgsql (支持postgresql)
c) --with-mysql-lib=/mysql/lib (设置mysql lib库的路径)
d) --with-mysql-include=/mysql/include (设置mysql include的路径)
3.安装过程中可能会碰见这个错误:
办法是编译之前修改文件super-smack-1.3/src/query.cc
第193行:
< int len = 0, num_recs = 0;
修改成:
> long len = 0; int num_recs = 0;
第199,200行
< int str_len = (*i).first.length();
< if((unsigned)p + str_len + 3 *sizeof(int) < (unsigned)p_end )
修改成:
> long str_len = (*i).first.length();
> if((long)p + str_len + 3 *sizeof(int) < (long)p_end )
第219行
< len = (unsigned)p - (unsigned)buf;
修改成:
> len = (long)p - (long)buf;
(以上修改方法摘抄自网上的一篇blog,可惜link我已经找不到了,真不是我抄袭)
4.安装完成后,可以用自带的配置文件测试一下:
super-smack -d mysql ./smacks/select-key.smack 2 5
2 表示启动2个客户端,5 则表示每个客户端轮询5次。
测试过程可能会碰到一些问题(比如我碰到过找不到/tmp/mysql.sock),这是因为select-key.smack中一些参数设置和实际不符。修改一下就好了。
结果分析
[root@vm189 mysqltest]# super-smack -d mysql ./select_key.smack 20 100
Query Barrel Report for client smacker1
connect: max=0ms min=0ms avg= 0ms from 20 clients
Query_type num_queries max_time min_time q_per_s
select_index 2000 4910 147 6.59
很容易理解。结果包括一共执行了多少次查询(num_queries),最大的一次查询时间(max_time)是4910