tcpcopy,模拟在线MySQL压力测试的好帮手

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

tcpcopy是一个基于底层的应用请求复制(所有基于tcp的packets)开源项目,可用于替代ab做在线模拟压力测试,可转发各种在线请求到测试服务器上,进行较为详尽的近乎实际的测试,从而避免了新业务、系统上线带来的潜在问题。

tcpcopy的四大功能:

1)分布式压力测试,将多个前段请求集中到某个后端进行压力测试
2)上线前测试,检验新系统可靠性,提前发现潜在问题
3)对比测试,同样请求,针对不同或不同版本程序,可以做性能对比等试验 
4)应用热备份,对于后端的短连接,请求丢失率非常低(1/10万)

tcpcopy具有以下几个特点:

1)实时转发
2)近乎真实效果
3)对在线系统影响很小
4)操作简单
5)分布式
6)意义非凡

使用tcpcopy非常简单,下载源码,编译,按照说明,几个步骤很快就能使用。

关于tcpcopy使用的一些注意事项有:

1)Linux平台,内核2.6+
2)TCPCOPY类似于UDP,所以会丢包,进而丢失请求
3)本系统不支持域名,只支持ip地址
4)Local Requests,请设置lo MTU不超过1500,并且在配置文件中不要设置127.0.0.1地址,
要设置内网或者外网地址
5)TCPCOPY server有可能会成为性能瓶颈
6)丢失请求率跟网络状况有关,最好在内网内复制请求
7)TCPCOPY中的tcpcopy和interception程序运行需要root权限
8)TCPCOPY只与ip、tcp层的数据有关,如果请求验证与tcp层以上的协议有关,则系统不能正常运行。
例如:mysql连接协议,由于权限认证与tcp层上面的mysql协议有关,所以复制过去的请求会被目
标测试服务器认为非法请求,这个时候需要针对mysql协议作具体针对性的处理,tcpcopy程序才能正常运行
9)程序更新非常快,所以最新版本在svn上面
svn checkout 
http://tcpcopy.googlecode.com/svn/trunk/ tcpcopy
10)目前追求的是功能,性能优化和代码重构会在稳定以后进行
11)长response目前支持不是很好,将在下一个版本改进
12)如果有问题,请注意error.log文件提示的错误信息 (email: 
163.beijing@gmail.com)
13)源代码已经转到github

除了这些,下面是我在用tcpcopy测试mysql时的一些小结:
1) 测试MySQL时,测试机需要开启 skip-grant-tables,否则无法正常进行,因为MySQL需要进行认证;在线服务器无需调整
2) 测试过程中不能执行flush privileges,否则上述选项会失效
3) 每次启用tcpcopy时,都需要重启mysqld,不能在线直接应用,否则不能转发包(最新版本已经解决这个问题)
4) 用sysbench进行测试过程中,prepare时,在线服务器能创建测试表,测试机无法创建新表
5) 需适当调大内核参数:ip_queue_maxlen,否则会出现大量的queue dropped
6) 无法完全保证在线服务器和测试机的数据一致性,只能做为模拟线上压力,提前进行bug测试等用途

2012-02-15 更新: tcpcopy-mysql-alpha-v0.7.tar.gz 版本经过长期测试,已经正式稳定可靠,可以放心在for MySQL环境下使用。


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/1879725,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
29天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
1月前
|
监控 关系型数据库 MySQL
Flink CDC产品常见问题之使用3.0测试mysql到starrocks启动报错如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
2月前
|
关系型数据库 MySQL Java
Mysql专栏 - 线上调优与压力测试
Mysql专栏 - 线上调优与压力测试
85 0
|
4月前
|
关系型数据库 MySQL Shell
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
52 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL批量插入测试数据的几种方式
MySQL批量插入测试数据的几种方式
63 0
MySQL批量插入测试数据的几种方式
|
5月前
|
关系型数据库 MySQL 测试技术
软件测试|MySQL BETWEEN AND:范围查询详解
软件测试|MySQL BETWEEN AND:范围查询详解
221 0
|
5月前
|
关系型数据库 MySQL 测试技术
软件测试|MySQL LIKE:深入了解模糊查询
软件测试|MySQL LIKE:深入了解模糊查询
43 0
|
5月前
|
关系型数据库 MySQL 测试技术
软件测试|MySQL WHERE条件查询详解:筛选出需要的数据
软件测试|MySQL WHERE条件查询详解:筛选出需要的数据
33 0
|
5月前
|
关系型数据库 MySQL 测试技术
软件测试|MySQL ORDER BY详解:排序查询的利器
软件测试|MySQL ORDER BY详解:排序查询的利器
197 0