在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
tcpcopy可以当做一种压力测试工具,也可以获取真实的用户访问流量,从而模拟真实运行环境,tcpcopy的开发者这样介绍它: TCPCopy是一种请求复制(所有基于tcp的packets)工具,其应用领域较广,利用TCPCopy程序,可以把访问memcached的系统流量复制一份到membase系统中去。对于membase来说,这份流量就是访问membase的,跟直接上线 安装: 复制代码 代码如下:tar -zxvf tcpcopy-0.9.0 .tar.gz cd tcpcopy-0.9.0 ./configure make make install 注意:tcpcopy 和 intercept的版本,配置参数要一致 现在的代码已经放在github(https://github.com/session-replay-tools/tcpcopy)上了,1.0 以上的版本,tcpcopy 和 intercept 包已经分开了,需要单独下载安装,注意,如果在安装intercept的时候 ./configure报错checking for pcap.h … not found,可以 通过yum install libpcap-devel解决。
使用方法如下: 复制代码 代码如下: iptables -I OUTPUT -p tcp --sport port -j QUEUE 3)interception
试用: 复制代码 代码如下:modprobe ip_queue iptables -I OUTPUT -p tcp --sport 80 -j QUEUE interception 操作Client-VM1 复制代码 代码如下:tcpcopy 10.1.6.205 80 10.1.6.206 80 作者交待了一些注意事项: 1)Linux平台,内核2.6+,需要支持netlink机制 2)TCPCopy中的tcpcopy和interception程序运行需要root权限 3)interception在同一台机器只需要要运行一个实例,多个实例还不支持 4)TCPCopy client需要连接测试服务器的36524端口,所以要对外开放36524端口 5)TCPCopy由于依赖于抓包函数,压力大的时候,抓包函数本身不可靠,所以会丢包, 进而丢失请求 6)由于interception程序密切跟ip queue内核模块相关,所以当压力很大的时候请求 丢失率很高,需要优化sysctl系统参数才能达到好的效果(通过cat /proc/net/ip_queue, 查看ip queue运行情况,如果Queue dropped的数值不断增大,则需要修改ip_queue_maxlen参数, 比如echo 4096 > /proc/sys/net/ipv4/ip_queue_maxlen; 如果Netlink droppedde的数值不断增大,修改net.core.rmem_max和net.core.wmem_max参数, 比如sysctl -w net.core.rmem_max=16777216和sysctl -w net.core.wmem_max=16777216) 7)复制同一台机器进程之间的请求,也即Local Requests,请设置lo MTU不超过1500, 并且在配置文件中不要设置127.0.0.1地址,要设置内网或者外网地址 8)TCP segmentation offloading相关问题(要注意网卡tso和gro要关闭) 如果tcpcopy所抓的数据包大小超过MTU,那么由于raw socket output的原因,需要你 改变在线设置,比如:ethtool -K eth1 tso off ; ethtool -K eth1 gro off 9)TCPCopy server,也即interception程序有可能会成为性能瓶颈,特别是对大数据响应这种情况 10)测试环境最好和在线环境一致,比如连接都保持keepalive 11)TCPCopy只与ip、tcp层的数据有关,如果请求验证与tcp层以上的协议有关,则系统不能正常运行。 例如:mysql连接协议,由于权限认证与tcp层上面的mysql协议有关,所以复制过去的请求会被目 标测试服务器认为非法请求,这个时候需要针对mysql协议作具体针对性的处理,tcpcopy程序才能正常运行 12)多层架构环境下,测试系统一定要独立,与在线系统没有业务关联,否则会影响在线 13)丢失请求率跟网络状况有关,最好在内网内复制请求 14)本系统不支持域名,只支持ip地址 15)针对长请求(比如上传文件),本系统不是很支持,预计0.5版本会支持 16)客户端ip地址为内网ip地址,一般情况下其应用请求是无法复制到外网测试机器上面去的。 17)为了避免不必要的麻烦,关闭的时候先关闭tcpcopy,然后再关闭interception
|
请发表评论