十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

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

上一篇 / 下一篇  2013-12-07 14:13:45 / 个人分类:tcpcopy

文章来源
  • 文章来源:【转载】

    主要信息来自:http://code.google.com/p/tcpcopy/

] t)aI\n'q G0

     tcpcopy是一个基于底层的应用请求复制(所有基于tcp的packets)开源项目,可用于替代ab做在线模拟压力测试,可转发各种在线请求到测试服务器上,进行较为详尽的近乎实际的测试,从而避免了新业务、系统上线带来的潜在问题。51Testing软件测试网[3X$a(|5y P)u/v})F

     tcpcopy的四大功能:

3W_3Ro \S NP0

     1)分布式压力测试,将多个前段请求集中到某个后端进行压力测试

Fr9]-hhd.t'q,\0

     2)上线前测试,检验新系统可靠性,提前发现潜在问题51Testing软件测试网/g~3S'IiG

     3)对比测试,同样请求,针对不同或不同版本程序,可以做性能对比等试验51Testing软件测试网a$G/Xc)f

     4)应用热备份,对于后端的短连接,请求丢失率非常低(1/10万)51Testing软件测试网b^s3f:cH3T

     tcpcopy具有以下几个特点:

DM9o8N4G!@'J0

     1)实时转发51Testing软件测试网.kr(zmG4K a R

     2)近乎真实效果51Testing软件测试网a ygb#Q8yN

     3)对在线系统影响很小

zuKkgl^`\0

     4)操作简单

9Q*TZ @(y;Zu0

     5)分布式

? U$cyf aD~w0

     6)意义非凡51Testing软件测试网|/A S?5S'W d

     使用tcpcopy非常简单,下载源码,编译,按照说明,几个步骤很快就能使用。51Testing软件测试网\w+l } YjE

     关于tcpcopy使用的一些注意事项有:51Testing软件测试网 CYu!P;w i-ot6s

     1)Linux平台,内核2.6+

N J#?+}3L7]/w0

     2)TCPCOPY类似于UDP,所以会丢包,进而丢失请求

q.J|#dF#y Nz0

     3)本系统不支持域名,只支持ip地址51Testing软件测试网7D D*Sx@*~6g.mAQ

     4)Local Requests,请设置lo MTU不超过1500,并且在配置文件中不要设置127.0.0.1地址,51Testing软件测试网!xmEZpl"X*L

     要设置内网或者外网地址

_rJ(o2}r_0

     5)TCPCOPY server有可能会成为性能瓶颈51Testing软件测试网a$E.|T"z`%exN

     6)丢失请求率跟网络状况有关,最好在内网内复制请求

CM w-P7tcj3Pl _0

     7)TCPCOPY中的tcpcopy和interception程序运行需要root权限

+qGEf2F+hv Gf ll0

     8)TCPCOPY只与ip、tcp层的数据有关,如果请求验证与tcp层以上的协议有关,则系统不能正常运行。51Testing软件测试网Z+O u5][

     例如:mysql连接协议,由于权限认证与tcp层上面的mysql协议有关,所以复制过去的请求会被目

6n;UYEd0

     标测试服务器认为非法请求,这个时候需要针对mysql协议作具体针对性的处理,tcpcopy程序才能正常运行51Testing软件测试网l2n!a D!XifZ

     9)程序更新非常快,所以最新版本在svn上面51Testing软件测试网W~-_,gh3ccH

     svn checkout http://tcpcopy.googlecode.com/svn/trunk/ tcpcopy51Testing软件测试网:G/DM7Oi%FRMEz!eS

     10)目前追求的是功能,性能优化和代码重构会在稳定以后进行51Testing软件测试网&T*^;qa }

     11)长response目前支持不是很好,将在下一个版本改进51Testing软件测试网"hQ&P]Us_

     12)如果有问题,请注意error.log文件提示的错误信息 (email: 163.beijing@gmail.com)

_@"p3z#C0

     13)源代码已经转到github

_Beo\_]0

     除了这些,下面是我在用tcpcopy测试mysql时的一些小结:

b8TONH@(Yd0

     1) 测试MySQL时,测试机需要开启 skip-grant-tables,否则无法正常进行,因为MySQL需要进行认证;在线服务器无需调整

h.Kx1@ \w0

     2) 测试过程中不能执行flush privileges,否则上述选项会失效51Testing软件测试网z2W vn F2[

     3) 每次启用tcpcopy时,都需要重启mysqld,不能在线直接应用,否则不能转发包(最新版本已经解决这个问题)51Testing软件测试网!]out2_

     4) 用sysbench进行测试过程中,prepare时,在线服务器能创建测试表,测试机无法创建新表

:PX0N v{`.a7WU JU0

     5) 需适当调大内核参数:ip_queue_maxlen,否则会出现大量的queue dropped51Testing软件测试网)Ct$mjo/^7F;c

     6) 无法完全保证在线服务器和测试机的数据一致性,只能做为模拟线上压力,提前进行bug测试等用途51Testing软件测试网 tM|yk&d)R


相关阅读:

TAG: Tcpcopy

家有宝贝 引用 删除 msangel   /   2013-12-10 11:45:41
up ~~~~
家有宝贝 引用 删除 msangel   /   2013-12-10 11:45:32
5
 

评分:0

我来说两句

Open Toolbar