super-smack压测工具
简介
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压测工具的更多相关文章
- 压测工具Locuse的使用
我是听朋友提起的"蝗虫"(Locust),然而她不想用python,我就拿来试一试~ http的 各种压测工具也已经太多了,所以主要是试试locust在当前比较流行的rpc协议上的 ...
- Http压测工具wrk使用指南
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- web压测工具http_load原理分析
一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...
- [软件测试]网站压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
- Http压测工具wrk使用指南【转】
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- python服务端多进程压测工具
本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见 ...
- 内存压测工具Memtester
在做压力测试时,发现一个内存压测工具Memtester,可以随意设置内存占用大小,非常方便 下载地址:http://pyropus.ca/software/memtester/old-versions ...
- Http 压测工具 wrk 基本使用
Http 压测工具 wrk 基本使用 Intro wrk 是一款现代HTTP基准测试工具,能够在单个多核CPU上运行时产生显着负载.它将多线程设计与可扩展事件通知系统(如epoll和kqueue)结合 ...
- 压测工具使用(vegeta)
一.压测工具vegeta 1.介绍 Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库. 官方地址:https://github.com/tsen ...
随机推荐
- layui复选框
效果图 layui复选框,一个主的复选框控制多个从复选框,主复选框和从复选框的颜色不一样 layui复选框的样式,都是在选然后才会有的,所以直接通过css设置就实现不了了.只可以通过js动态设置 ht ...
- 15. 3Sum (重新分配数组大小)
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- 189. Rotate Array(Array)
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- wiper
wiper - 必应词典 美['waɪpər]英['waɪpə(r)] n.手绢儿:搌布:揩布:(汽车风挡上的)雨刷器 网络刮水器:雨刮器:拭雨器 变形复数:wipers:
- f5电源模块损坏
现象: ssh登录f5后有日志显示 现场确认f5 2槽电源指示灯不亮,且电源线正常.重新开关电源模块,拔插电源线后仍不亮.故确认是电源模块损坏. 处理:直接采购新的电源模块更换即可.f5电源支持热插拔 ...
- 阿里读写分离数据源SELECT LAST_INSERT_ID()获取不到id
异常现象 insert 通过 mybatis 以下语法给领域类 赋予的 id 值为0. 后续根据主键的update操作失效.且无异常抛出 <selectKey keyProperty=" ...
- spring cloud ribbon和feign的区别
spring cloud的Netflix中提供了两个组件实现软负载均衡调用:ribbon和feign. Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器 它可以在客户端配置 ribb ...
- Java中 final、static、abstract区别与联系
1.static修饰符 static作用于代码块:称作静态代码块(可以初始化static field,不能初始化非static field); static作用于methods: static方法只能 ...
- 使用SQL语句创建数据库1——创建一个数据库文件和一个日志文件的数据库
目的:创建一个数据库文件和一个日志文件的数据库 在matser数据库下新建查询,输入的命令如下: USE master——指向当前使用的数据库.创建数据库实际上是向master数据库中增加一条数据库信 ...
- Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this
最近使用新版本的mysql,执行语句的时候报错.网上找了一下,解决方法如下: vim /etc/mysql/conf.d/mysql.cnf [mysqld] sql_mode=STRICT_TRAN ...