简介

super-smack是一款开源压测工具,支持MySQL、PostgreSQL、Oracle。本篇主要介绍一下使用super-smack压测MySQL体会。

1.SQL定义

2.数据字典定义

3.表结构

4.自动生成数据

5.SQL执行顺序与次数

6.多终端混合压测

MySQL性能表现与实际业务场景有很大关系。压测结果不代表正式生产环境容量,并且对于不同业务场景来说,QPS、TPS可能不再是决定性的指标。

安装

1. wgethttp://vegan.net/tony/supersmack/super-smack-1.3.tar.gz

2. tar xvzfsuper-smack-1.3.tar.gz

3../configure  --prefix=/usr/local/super-smack--with-mysql \

--with-mysql-lib=/app/mysql/lib\

--with-mysql-include=/app/mysql/include/mysql

4. make

5. make install

本次安装是针对MySQL。通过./configure  --help 可以看到帮助。

--with-mysql            Build with MySQL support

--with-pgsql            Build with PostgreSQL support

--with-oracle           Build with Oracle support

在64位系统面安装需要做一些变量声明修改。在github上面有相应patch

https://github.com/yasunorikaku/super_smack_patch_for_x86_64

 

目录结构

gen-data

数据生成工具.用于生成数据表测试数据

./gen-data -n10000000 -f %48-64s%n,%32-64s,%n,%d >words.dat

1.-n 10000000 表示行数

2.-f 表示格式

3.s 表示字符串

4.n 表示序列

5.d 表示数字

super-smack

super-smack 客户主程序。用于发起压力测试,模拟操作客户端.

example smacks

模板文件一般有以下组成部分:

Client

client"admin"

{

user "用户名称";

host "主机";

db "数据库名称";

pass "密码";

socket "mysql  socket ";

}

Table

table "http_auth"

{

client "admin";

create "create table http_auth

(username char(64) not null primary key,

pass char(12),

mail char(16),

uid integer not null,

gid integer not null,

key mail_key (mail)

)";

min_rows"90000";

data_file"words.dat";

gen_data_file"gen-data -n 90000 -f %36-36s%n, %10-10s,%10-10s,%n,%d";

}

dictionary

dictionary"word"

{

type "rand"; //Seq、Unique、Rand

source_type "file"; // file、list、template

source "words.dat";

delim ",";

file_size_equiv "55000";

}

query

query"delete_by_username"

{

query "delete from  http_auth where username = '$word'";

type "delete_index";

has_result_set "y";

parsed "y";

}

smacker

client"smacker"

{

user "用户名称";

pass "用户密码";

host "主机";

db "数据库名称";

socket " mysql  socket ";

query_barrel "5 select_by_username ";

}

注:可以定义多个client.

main

main

{

smacker.init();

smacker.set_num_rounds($2);

smacker.set_num_rounds($2);

smacker.create_threads($1);

smacker.connect();

smacker.unload_query_barrel();

smacker.collect_threads();

smacker.disconnect();

}

注:

1.运行客户需要输入$1、$2 .$2表示循环次数,$1表示线程个数.

2.可以加入多个client

输出

./super-smack -dmysql  update-select-delete.smack -D/data/   10 10

输出结果:[此处我定义两个终端]

Query BarrelReport for client smacker1

connect:max=14ms  min=0ms avg= 6ms from 10clients

Query_type      num_queries     max_time        min_time        q_per_s

delete_index    60                 25              0            329.64

insert_index    50                 31              1            274.70

select_index    100                36              0            549.41

update_index    50                 31              0            274.70

Query BarrelReport for client smacker

connect:max=20ms  min=0ms avg= 5ms from 10clients

Query_type      num_queries     max_time        min_time        q_per_s

delete_index    60                4               0             328.13

insert_index    50                39              1             273.44

select_index    100               1               0             546.88

update_index    50                0               0             273.44

最后

1.可以自定义多个Query;

2.对于不同的查询需要定义多个数据字典;

3.支持多个客户端。

super-smack压测工具的更多相关文章

  1. 压测工具Locuse的使用

    我是听朋友提起的"蝗虫"(Locust),然而她不想用python,我就拿来试一试~ http的 各种压测工具也已经太多了,所以主要是试试locust在当前比较流行的rpc协议上的 ...

  2. Http压测工具wrk使用指南

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  3. web压测工具http_load原理分析

    一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...

  4. [软件测试]网站压测工具Webbench源码分析

    一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...

  5. Http压测工具wrk使用指南【转】

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  6. python服务端多进程压测工具

    本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见 ...

  7. 内存压测工具Memtester

    在做压力测试时,发现一个内存压测工具Memtester,可以随意设置内存占用大小,非常方便 下载地址:http://pyropus.ca/software/memtester/old-versions ...

  8. Http 压测工具 wrk 基本使用

    Http 压测工具 wrk 基本使用 Intro wrk 是一款现代HTTP基准测试工具,能够在单个多核CPU上运行时产生显着负载.它将多线程设计与可扩展事件通知系统(如epoll和kqueue)结合 ...

  9. 压测工具使用(vegeta)

    一.压测工具vegeta 1.介绍 Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库. 官方地址:https://github.com/tsen ...

随机推荐

  1. Adapter类 调用Activity中的函数

    在Adapter类中可以定义一个MainActivity变量,在初始化时,对其赋值,例如fragment的适配器中: private MainActivity context; private Lis ...

  2. Git 分支 - 分支管理

    1 查看每一个分支 git branch 2 查看每一个分支的最后一次提交 git branch -v 3 创建分支 (1)只创建本地分支:git branch <branchname> ...

  3. 微信小程序开发——全局配置详细介绍

    本文针对官方文档未说明清楚的进行详细探索研究,官方文档详见:全局配置 . pages: 删除页面,需要先删除app.json中pages对应页面的路径,再去删除页面相关的所有文件,不然会出现页面文件混 ...

  4. 微信小程序开发——导航失效的解决办法

    异常描述: 使用 navigator 导航,各种属性配置没问题,就是点击死活不跳转. 异常分析: 遇到这种情况,要先考虑的就是当前配置的导航url,是不是已经使用在tabBar中,因为小程序对于nav ...

  5. 命令行操作mysql数据库

    1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql 2.导出一个表m ...

  6. f5会话保持

    B/S架构的建议选择 inset cookie :c/s架构的 建议选择 sorce ip 1.  Introduction to session persistence profiles Using ...

  7. python+selenium环境安装

    目前 selenium 版本已经升级到 3.7了,网上的大部分教程是基于 2.x写的,所 以在学习前先要弄清楚版本号,这点非常重要.本系列依然以 selenium2 为基础, 目前 selenium3 ...

  8. how2j网站前端项目——天猫前端(第一次)学习笔记6

    开始我的订单页面 学着学着,会觉得我这是在干啥呢?我要学的是Java不是吗?怎么要学这么久的前端啊?说实话,我很迷茫,不知道以后的工作具体是做什么?学的这些能用到吗? 不过,还是要把这个项目跟着走完! ...

  9. call指令

    CPU执行call指令时,进行两步操作: 将当前的IP或CS和IP压入栈中; 转移. call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同. 1)依据位移进行转移的c ...

  10. 当前上下文中不存在viewbag

    参考链接:http://www.cnblogs.com/chas/p/5076297.html view文件夹下的web.config中的appsetting节点中缺少了 <add key=&q ...