最近在公司弄一个频繁GC的问题,以下是我提的第一个建议,但公司环境不允许这样实行(生产环境管理及其严格,而且涉及调用其他服务的问题),现记录如下。
TCPcopy最开始是网易开发的用于广告投放系统的一个测试工具,能够进行分布式压力测试,普通上线测试,流量放大测试等,其测试数据比较真实。
下面以图形说明TCPcopy的原理
1.下图是一个典型的web应用服务器的示例,用户请求过来后,达到web应用,web应用处理完请求后,通过网络传输给请求发起者。
由于生产环境的限制比较严格,不能在生产环境下进行有效测试和获取足够的运行数据,在测试环境下能够获取更多的数据,但测试环境中的数据不够真实,难以复现生产环境下出现的各种问题。TCPcopy打通了生产环境和测试环境之间的通道。下图是加入了TCPcopy的生产服务器和测试服务器:
使用TCPcopy时,首先需要在生产服务器上安装TCPcopyclient,然后在测试服务器上安装TCPcopyserver。
1. TCPcopyclient运行在线上前端机上,监听IP层的数据包,
2. 用户请求到达线上前端机,
3. Socket包在IP层被拷贝了一份,传给TCPcopy进程,
4. TCPcopy修改包的目的及源地址,发给测试前端机
5. 测试前端机接收数据包,处理请求,并返回结果
6. 返回结果在IP层被拦截、丢弃, TCPcopyserver拷贝返回数据包的IP header返回
7. IP header被发送给线上前端机的TCPcopy进程。
实施步骤
首先,下载TCPcopy的源码包
假设有两台机器:
机器A:线上前端机,IP:192.168.1.100;
机器B:测试前端机,IP:192.168.1.200;
在两台机器上都有sudo权限
1. 在B依次执行:
a) Modprobe ip_queue 加载ip_queue模块
b) Sudo iptables –t filter –loutput –p tcp –sport 80 –j queue 配置iptables规则
c) Sudo ./interception& 启动TCPcopy服务器
2. 在A上执行:
a) Sudo ./tcpcopy 192.168.1.100 80192.168.1.200 80 & 启动TCPcopy客户端
如果在A上看到”I am booted”,则表示操作成功,TCPcopy已经开始工作。
本文详细介绍了TCPcopy工具如何在受限的生产环境中进行分布式压力测试、流量放大测试,以及如何打通生产环境与测试环境之间的通道,以获取更真实的数据来解决频繁GC问题。
3447

被折叠的 条评论
为什么被折叠?



