tcpcopy icon indicating copy to clipboard operation
tcpcopy copied to clipboard

请教丢包问题

Open zmm2016 opened this issue 7 years ago • 1 comments

两台机器安装1.0.0版本tcpcopy: online机器:10.10.3.4 测试+辅助机器:10.38.11.4

online机器运行: tcpcopy -x 8000-10.38.11.4:8000 -s 10.38.11.4 -c 10.10.3.4 -n 100 -d iptables -A INPUT -s 10.38.11.4 -p tcp --sport 8000 -j DROP 测试机器运行: intercept -i eth0 -F 'tcp and src port 8000' -d

可以正常运行TCPCOPY,不过有些问题很诡异,在online机器请求数只有一两个的(比较少)的情况下正常放大并发到测试机器。比如在online机器上有10个请求时测试机器则会出现丢包现象,测试机器只会收到700多个请求。进一步增加请求连接时比如在online机器上有20个请求时,测试机器只会收到1000多个请求。

问题: 1、这样两台机器部署是否有问题?

2、丢包的潜在原因是什么呢?1个请求包放大100倍或者200不存在丢包情况,只要包一多,测试机收到的包数目就不对了。

zmm2016 avatar Dec 20 '17 01:12 zmm2016

丢包的原因有很多,这里只讲相关的 1、放大倍数越大,效果越差,这是因为tcpcopy只是随机改变客户端的端口号(简单处理),端口号是有限的,倍数越大,冲突的概率越大。

2、增加连接数量,如果是同一个ip地址来访问线上,放大倍数后,冲突的概率就会越大

解决策略: 1、从不同机器来访问online机器,增加客户端的ip数量,放大倍数后,可以降低冲突概率 2、启动多个tcpcopy实例,修改-c 参数(修改客户端的ip地址),达到同样降低冲突的概率 3、尽量用长连接,不要用短链接,因为短链接占用端口数量巨多,很容易导致冲突

lazio579 avatar Dec 20 '17 02:12 lazio579