编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

TCPCopy在架构测试中的应用(tcpip架构)

wxchong 2024-07-29 08:10:05 开源技术 21 ℃ 0 评论

什么是TCPCopy:

TCPCopy是一种针对TCP的基于底层的在线请求复制工具,可以用来帮助解决架构方面的大部分问题。

在不影响在线使用的情况下,把线上的流量复制并且引到测试环境中去,使其达到对server测试的目的。

常用架构测试工具的优缺点:

架构测试效果好坏的关键在于能不能构造与在线匹配的环境。

传统压力测试工具:

优点

  • 简单

  • 成本低

缺点

  • 网络过于理想化

  • 请求往往单一

  • 同一客户端

基于web服务器的请求复制:

优点

  • 请求多样化

  • 成本低

缺点

  • 不具备通用性

  • 丢失网络延迟

  • 占用在线资源较为严重

LoadRunner工具:

优点

  • 效果比前面效果更为真实

缺点

  • 成本高

  • 操作较为复杂

  • 请求与实际请求的多样性还存在一定差距

  • 与真实在线的网络状况还存在一定差距

TCPCopy详细介绍:

基本原理

TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。

TCPCopy 不是基于应用层的复制,而是基于底层数据包的请求复制,这么做的好处是:可以做到无需穿透整个协议栈,路程最短的,可以从数据链路层抓请求包,从数据链路层发包,路程一般的,可以在IP层抓请求包,从IP层发出去,不管怎么走,只要不走TCP,对在线的影响就会小得多。

架构图如下:

特点

  • 实时

  • 效果真实

  • 低负载,不影响在线

  • 操作简单

  • 分布式

功能

  • 性能领域

  • 分布式压力测试

  • 增强传统压力测试工具的真实性

  • 性能对比试验,比如apache vs nginx

  • 可用性

  • 热备份

  • 崩溃试验

  • 针对server的DDOS攻击

  • 预热

  • 可测试性

  • 冒烟测试

应用领域

凡是能够轻松被破解的协议,TCPCopy就能有用武之地。

基于tcp的无状态的协议

  • Http

  • Memcached

  • Hmux

  • ...

基于tcp的有状态的协议

  • Mysql

  • Pop3

  • ...

注意事项:

1)Linux平台,内核2.6+,需要支持netlink机制。

2)TCPCopy中的tcpcopy和interception orintercept程序运行需要root权限。

3)interception(intercept 0.5+)在同一台机器只需要运行一个实例,多个实例不支持。

4)TCPCopyclient需要连接测试服务器的36524端口,所以要对外开放36524端口。

5)TCPCopy由于依赖于抓包函数,压力大的时候,抓包函数本身不可靠,所以会丢包,进而丢失请求。

6)由于interception(intercept 0.5+)程序密切跟ip queue内核模块相关,所以当压力很大的时候请求丢失率很高,需要优化sysctl系统参数才能达到好的效果。

7)测试环境最好和在线环境一致,比如连接都保持keepalive。

8)TCPCopy只与ip、tcp层的数据有关,如果请求验证与tcp层以上的协议有关,则系统不能正常运行。

9)多层架构环境下,测试系统一定要独立,与在线系统没有业务关联,否则会影响在线。

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

11)TCPCopy不支持域名,只支持ip地址。

12)针对长请求(比如上传文件),0.5版本以下不是很支持,0.5版本及其以上没有此问题。

13)为了避免不必要的麻烦,关闭的时候先关闭tcpcopy,然后再关闭interception。

总结

如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力无法预测,如果你想对比诸如apache和nginx的性能,如果你想放大在线流量,TCPCopy可以帮助你解决上述难题。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表