`
macken
  • 浏览: 346073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL压力测试工具super-smack简单教程

阅读更多

 

一、源码下载
       下载地址:http://vegan.net/tony/supersmack/
    源码:http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz

二、编译及安装
       编译环境:Ubuntu Server 9.10 64位
       配置编译选项:./configure--prefix=/usr/local/super-smack-1.3 --with-mysql--with-smacks-dir=/usr/local/super-smack-1.3

由于MySQL采用了编译安装的方式因此编译选项改为:

./configure --prefix=/usr/local/super-smack-1.3 --with-mysql --with-smacks-dir=/usr/local/super-smack-1.3 --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql-include=/usr/local/mysql/include/mysql
make && make install
      编译的时候要把/usr/lib64目录下的libmysqlclient.so.16放到/usr/lib目录下,否则会出现下面的错误:
configure: error: Could not find libmysqlclient in ' /usr/lib /usr/lib/mysql                    /usr/local/lib /usr/local/lib/mysql  /usr/local/mysql/lib
configure: error: Could not find mysql.h in ' /usr/include /usr/include/mysql                        /usr/local/include /usr/local/include/mysql                        /usr/local/mysql/include'
   由于我的mysql是自行编译的,所以我这样操作
cd /usr/include; ln -s /usr/local/mysql/include/mysql
cd /usr/lib; ln -s /usr/local/mysql/lib/mysql

   注意:在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib

   在make的过程中遇到如下错误:

dictionary.h:93: error: ‘strlen’ was not declared in this scope
super-smack.cc:126: error: ‘strlen’ was not declared in this scope
   则分别在dictionary.hsuper-smack.cc文件的头文件引用中加入 #include <string.h>   若遇到如下错误:
query.cc:200: error: cast from ‘char*’ to ‘unsigned int’ loses precision
query.cc:200: error: cast from ‘char*’ to ‘unsigned int’ loses precision
query.cc:219: error: cast from ‘char*’ to ‘unsigned int’ loses precision
query.cc:219: error: cast from ‘char*’ to ‘unsigned int’ loses precision
   修改这个query.cc文件,将上面指定的几行中的unsigned int改为unsigned long即可。

三、使用super-smack
1)首先需要修改相应的.smack文件,这些文件在源码目录下的smacks目录下,select文件和update文件,其实就是代表测试的不同类型,select还是update,可以选择你要的操作使用相应的文件,这里我们使用select-key.smack.
    将两处mysql socket修改成实际的mysql socket所在位置。    

    将两处处words.dat改成http_auth.dat    
    将一处gen_data_file gen-data -n 90000 -f %12-12s%n,%25-25s,%n,%d
    修改成gen_data_file ./gen-data -n 90000 -f %12-12s%n %25-25s %n %d;注意是将逗号改为TAB空格.  
2)使用super-smack生成数据文件,然后导入mysqlhttp_auth表中,bin目录下运行:
         ./gen-data-n 90000 -f %12-12s%n %25-25s %n %d > /var/smack-data/http_auth.dat
3)在super-smack目录下运行进行压力测试了
          bin/super-smack-d mysql select-key.smack 10 1000
    -d指明是mysql数据库测试,然后指明测试文件,10表示10个线程,1000表示每个线程有1000个查询,可以根据你的需要修改.
查询结果:
Query Barrel Report for client smacker
connect:max=3ms min=0ms avg=1ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 20000 1 0 8124.3

在以上测试结果中,

l10代表10个客户端同时接入,1000代表每个客户端的查询次数(脚本中,对查询次数做了翻倍处理);

lmaxminavg为客户端最大、最小、平均连接时间;

lnum_queriesmax_timemin_time为总请求次数,最大、最小查询时间(以毫秒为单位);

lq_per_s为每秒处理的请求数。

 

四、MySQL性能测试总结

    基于模拟的一张的100w条记录的表进行测试,select的并发的最大客户端数是mysql能够允许的最大客户端连接数的3倍左右,update的并发的最大客户端数需低于mysql能够允许的最大客户端连接数。select的每秒平均查询次数是update的执行次数的3-4倍左右,当select获取的数据时多条记录时它的性能会下降一倍左右,如果在where条件中添加and条件能够提高mysql的查询性能,or条件则会降低查询性能。update在根据where条件更新多条记录时,性能也会下降一倍左右。以上结论是通过实验测试数据总结得出的结论,不同的环境数据可能会有不同。


五、参考资料

http://wangxiaoyu.blog.51cto.com/922065/463311

http://saw-unix.com/2010/08/super-smack_install_use.html

http://jatula.iteye.com/blog/297420

 

LinuxTone运维专家我的邀请链接:http://bbs.linuxtone.org/home.php?mod=invite&u=9145&c=a731102f9204f7fe

 

 

分享到:
评论

相关推荐

    mysql集群测试工具.docx

    4. **Super-smack**:这是由MySQL AB的程序员编写的另一个开源工具,同样支持多线程并发压力测试,具有高度可定制性。 在安装和使用这些工具时,通常需要根据具体的操作系统和MySQL版本来调整。例如,在Red Hat 5.5...

    MYSQL集群测试

    1. 测试工具介绍:文档提到了mysqlslap、sysbench、supersmack等工具,这些都是用于测试MYSQL性能的工具。 - mysqlslap是一个用于模拟多用户访问MySQL数据库的性能测试工具,它可以用来进行并发读写测试。 - ...

    测试工具总结

    本文将详细介绍几个常见的测试工具,包括Web服务器压力测试工具和数据库性能测试工具。 首先,Webbench是一个广泛使用的开源Web服务器压力测试工具,由Lionbridge公司开发。它可以模拟大量并发用户对网站发起请求,...

    Mysql 集群测试文档

    4. **Super-smack**:由MySQL AB的程序员开发的另一款开源产品,同样支持多线程并发压力测试,具有高度的可定制性。 #### 三、测试工具的安装与配置 以**MySQLslap**为例,其安装通常随MySQL默认安装包一同提供,...

    07mysql集群测试报告.pdf

    为了达到这个目标,使用了四个测试工具:Mysqlslap、mysql benchmark suite、sysbench和supersmack。测试用例包括并发写能力、并发事务处理能力、单线程功能测试以及大数据量下的读写性能对比。 在并发写能力测试中...

    IT-运维工程师的23个细节-进阶 (2).pdf

    - 压测与基准:mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool、sysbench。 - 代理与备份:MySQL Proxy工具如SOHU-DBProxy、Altas、cobar、Oceanus,以及物理备份工具Xtrabackup、LVM Snapshot。 ...

    IT运维工程师的23个细节进阶.doc

    - MySQL基准测试:如mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool和sysbench。 - MySQL代理:SOHU-DBProxy、Altas、cobar和Oceanus用于优化MySQL性能和负载均衡。 - 备份工具:mysqldump、...

    IT-运维工程师的23个细节-进阶.pdf

    MySQL基准测试工具如mysqlsla、sql-bench、Super Smack等,MySQL Proxy如SOHU-DBProxy、Atlas、cobar和Oceanus。物理备份有Xtrabackup和LVM Snapshot,逻辑备份工具如mysqldump、mysqlhotcopy、mydumper等。 9. **...

    IT-运维工程师的23个细节-进阶.docx

    15. **MySQL基准测试**: 使用mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool和sysbench来衡量数据库性能。 16. **MySQL代理**: SOHU-DBProxy、Altas、cobar、Oceanus提供MySQL的负载均衡和故障切换...

    最新IT-运维工程师的23个细节-进阶.docx

    16. 基准测试:多种MySQL基准测试工具如mysqlsla、sql-bench、Super Smack和Percona's TPCC-MYSQL Tool评估数据库性能。 17. 逻辑备份:mysqldump、mysqlhotcopy、mydumper、MySQLDumper和mk-parallel-dump/mk-...

Global site tag (gtag.js) - Google Analytics