Super-smack 是一个强大的广受赞誉的压力测试工具,支持MySQL和PostgreSQL。这个工具程序现在由 Tony Bourke 维护。
安装
Super-smack 现在是1.3版,源码下载地址如下:
http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz
./configure―with-mysql―with-pgsql
根据需要,可以只保留 MySQL 和 PostgreSQL 中的一个。如果你的 client library 安装在其他目录,你要指明它,例如:
./configure―with-mysql=/opt/mysql
然后
make
su
make install
PS. FreeBSD 下面有 ports 的,安装起来更方便。
使用
将程序提供的 smack 样本文件重新拷贝一份,然后编辑此文件,填入相应的连接信息,比如用户名、密码、端口和测试所用的数据库名。
cp /usr/share/smacks/select-key.smack select-key-mysql.smack
开始运行
super-smack ―d mysql select-key-mysql.smack 10 1000
10 是连接客户的数目,每个客户有100次轮询。
结果
Query Barrel Report for client smacker1
connect: max=66ms min=0ms avg= 66ms from 10 clients
Querytype numqueries maxtime mintime qpers
select_index 20000 0 0 4360.61
这表示 super-smack 运行了10个客户,客户连接最长时间为66毫秒,最短的则没有延迟,平均时间为62毫秒。Super-smack 总共执行了20000此查询,每个查询所花时间都小于1毫秒。整个测试期间,服务端平均每秒执行了4360.61次 select_index 型查询。
max、min、avg为客户端最大、最小、平均连接时间,num_queries、max_time、min_time为总请求次数,最大、最小查询时间(以毫秒为单位),q_per_s为每秒处理的请求数。
另外,可以修改 smack文件中 相应的参数以符合你的测试要求。
Files:
/usr/local/bin/gen-data
/usr/local/bin/super-smack
/usr/local/share/super-smack/select-key.smack
/usr/local/share/super-smack/update-select.smack
1. 源:http://vegan.net/tony/supersmack/
2. 安装:
注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib
3. 测试:
[root@DB_Backup smacks]# super-smack -d mysql select-key.smack 10 10000
Query Barrel Report for client smacker1
connect: max=37ms min=0ms avg= 10ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 200000 0 0 10148.47
[root@DB_Backup smacks]# super-smack -d mysql update-select.smack 10 1000
Query Barrel Report for client smacker
connect: max=2ms min=0ms avg= 0ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 10000 1 0 4038.90
update_index 10000 1 0 4038.90
在以上测试结果中
10代表10个客户端同时接入,1000代表每个客户端的查询次数(脚本中,对查询次数做了翻倍处理)
max、min、avg为客户端最大、最小、平均连接时间
num_queries、max_time、min_time为总请求次数,最大、最小查询时间(以毫秒为单位)
q_per_s为每秒处理的请求数
==========================================
1.下载软件
http://vegan.net/tony/supersmack/
2.编译安装
./configure --prefix=/usr/local/supersmack --with-mysql --with-mysql-lib=/usr/local/mysql/lib/mysql/ --with-mysql-include=/usr/local/mysql/include/mysql/
注意红色字体代表的目录,并不是默认的mysql/lib和mysql/include
[root@mysql super-smack-1.3]# make
[root@mysql super-smack-1.3]# make install
3.配置测试信息
[root@mysql bin]# cp /usr/share/smacks/select-key.smack /usr/local/supersmack/bin/
[root@mysql bin]# cp /usr/local/supersmack/bin/* /usr/bin/
修改select-key.smack 里面的帐号密码及测试使用的数据库。
4.开始测试
测试myiasm引擎
select-key性能
[root@mysql bin]# super-smack -d mysql select-key.smack 10 1000
./super-smack: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
缺少库文件,将该文件CP到系统目录下
# cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib
如果无法载入数据,则按以下方法处理
/usr/local/supersmack/bin/gen-data -n 90000 -f %12-12s%n,%25-25s,%n,%d>/var/smack-data/words.dat
再次运行测试
[root@mysql bin]# ./super-smack -d mysql select-key.smack 100 200
Query Barrel Report for client smacker1
connect: max=391ms min=1ms avg= 51ms from 100 clients
Query_type num_queries max_time min_time q_per_s
select_index 40000 0 0 3713.30
100用户执行200次轮询,共执行40000次查询
update-select性能
[root@mysql bin]# ./super-smack -d mysql update-select.smack 100 200
Query Barrel Report for client smacker
connect: max=2300ms min=1ms avg= 70ms from 100 clients
Query_type num_queries max_time min_time q_per_s
select_index 20000 18 0 1428.06
update_index 20000 20 0 1428.06
innodb测试
mysql> alter table http_auth engine=innodb;
Query OK, 90000 rows affected (1.85 sec)
Records: 90000 Duplicates: 0 Warnings: 0
select-key
[root@mysql bin]# ./super-smack -d mysql select-key.smack 100 200
Query Barrel Report for client smacker1
connect: max=683ms min=1ms avg= 59ms from 100 clients
Query_type num_queries max_time min_time q_per_s
select_index 40000 0 0 3694.71
update-select
[root@mysql bin]# ./super-smack -d mysql update-select.smack 100 200
Query Barrel Report for client smacker
connect: max=1208ms min=1ms avg= 57ms from 100 clients
Query_type num_queries max_time min_time q_per_s
select_index 20000 253 0 672.55
update_index 20000 87 0 672.55