如何利用tcpcopy来试验nginx hmux模块(以下所涉及到的tcpcopy,均是采用的是0.5以下的版本)
2011-09-26 14:07
309 查看
场景是这样的:
公司原来是利用nginx-->apache-->resin(hmux 6800)来做的。
现在已经书写了nginx hmux模块,完全可以这样nginx--->resin(hmux 6800),把系统架构简化了。
那么是不是直接替换呢,这样做有很大的风险,万一上线全面崩溃,怎么办,公司损失不说,个人在公司的职业生涯也结束了。
怎么办,怎么办?
有人说,我们逐步逐步上线,但这样也会有风险,压力大和压力小的时候是不一样的,而且这样的周期过长,等不及。
幸好有tcpcopy,请求复制工具,一个极具实用的工具(也是我们开发的)。
我们复制客户端过来的请求,也就是nginx处理的请求,复制一份到我们的测试机器上去,既不怎么影响在线,又能达到上线测试的目的。
我们在linux测试机器上部署上tcpcopy中的server,是这样部署的:
modprobe ip_queue (如果这个内核模块没有启动的话,要启动这个,不过内核版本要支持这个)
设置iptables
iptables -I OUTPUT -p tcp --sport 8022 -j QUEUE
为啥要设置这个呢,为的就是截获测试机器的响应的,否则直接返回客户端是肯定不行的。
./interception 以root用户权限运行此程序
当然在测试服务器部署上我们的nginx hmux模块,等待请求的到来。
测试机器部署完毕
我们需要复制请求,在在线服务器怎么做呢?
很简单,只需要运行我们的程序
./tcpcopy 61.135.250.217 80 61.135.250.208 8022
这里测试机器ip为61.135.250.208,在线服务器为61.135.250.217
由于客户端过来的请求packets,目的地址就是61.135.250.217,目的端口80,我们需要改变复制包的目的地址和目的端口,改成测试服务器的ip地址和端口号,这样才能 访问测试服务器,那访问测试服务器后的response怎么办,那就是由测试服务器上的interception来截获了,不会直接返回给客户端。
公司原来是利用nginx-->apache-->resin(hmux 6800)来做的。
现在已经书写了nginx hmux模块,完全可以这样nginx--->resin(hmux 6800),把系统架构简化了。
那么是不是直接替换呢,这样做有很大的风险,万一上线全面崩溃,怎么办,公司损失不说,个人在公司的职业生涯也结束了。
怎么办,怎么办?
有人说,我们逐步逐步上线,但这样也会有风险,压力大和压力小的时候是不一样的,而且这样的周期过长,等不及。
幸好有tcpcopy,请求复制工具,一个极具实用的工具(也是我们开发的)。
我们复制客户端过来的请求,也就是nginx处理的请求,复制一份到我们的测试机器上去,既不怎么影响在线,又能达到上线测试的目的。
我们在linux测试机器上部署上tcpcopy中的server,是这样部署的:
modprobe ip_queue (如果这个内核模块没有启动的话,要启动这个,不过内核版本要支持这个)
设置iptables
iptables -I OUTPUT -p tcp --sport 8022 -j QUEUE
为啥要设置这个呢,为的就是截获测试机器的响应的,否则直接返回客户端是肯定不行的。
./interception 以root用户权限运行此程序
当然在测试服务器部署上我们的nginx hmux模块,等待请求的到来。
测试机器部署完毕
我们需要复制请求,在在线服务器怎么做呢?
很简单,只需要运行我们的程序
./tcpcopy 61.135.250.217 80 61.135.250.208 8022
这里测试机器ip为61.135.250.208,在线服务器为61.135.250.217
由于客户端过来的请求packets,目的地址就是61.135.250.217,目的端口80,我们需要改变复制包的目的地址和目的端口,改成测试服务器的ip地址和端口号,这样才能 访问测试服务器,那访问测试服务器后的response怎么办,那就是由测试服务器上的interception来截获了,不会直接返回给客户端。
相关文章推荐
- 如何构造具有在线效果的无限压力(试验采用的tcpcopy为0.5以下的老版本)
- mysqlcopy 版本初步试验结果 (非skip, 采用的tcpcopy为 0.5以下的版本)
- tcpcopy长期运行展示(采用的是tcpcopy 0.5以下版本)
- 利用tcpcopy,对nginx进行压力测试,效果见正文(注意用的是tcpcopy 0.5以下的版本)
- tcpcopy分布式压力测试,效果堪比真实压力,远胜ab(注意采用的工具是tcpcopy 0.5以下的版本)
- 在Ubuntu 10.10版本中如何利用framebuf来驱动fb0设备
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 高版本Android如何利用反射调用系统隐藏的远程服务拦截来电
- 注意,tcpcopy 0.5版本和tcpcopy 0.4版本用法有很大的差别,而tcpcopy 1.0和tcpcopy 0.9差别也非常大
- 如何知道旧Web项目所采用的Servlet规范版本
- IE11如何采用其他低级版本调试网页
- Xcode8.1如何支持iOS8.0以下版本
- 解决TabControl的BUG(涉及Framework4.0以下所有版本)
- Laravel5.5以下版本中如何自定义日志行为详解
- 利用tcpcopy,如何复制在线请求到lvs的子系统中去?
- jsp利用JfreeChart-0.9.20.jar以下版本实现曲线图
- 如何在vs2005中利用vss6.0进行版本控制
- 安卓如何获取安卓系统版本的号及安卓4.0以下如何屏蔽home键
- mysql5.6及以下版本如何查询数据库里的json
- linux下如何利用QtCreator编译ARM版本的Qt程序