专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
51好读  ›  专栏  ›  运维帮

千万并发不是梦:TCPBurn并发测试

运维帮  · 公众号  · 运维  · 2019-05-27 17:39

正文

请到「今天看啥」查看全文



具体命令:

iptables -t raw -A PREROUTING -p tcp --dport 8080 -j NOTRACK

iptables -t raw -A OUTPUT -p tcp --sport 8080 -j NOTRACK


这里8080是Nginx监听端口,意思是对出入8080端口的数据包不进行跟踪。设置上述命令可以降低内存和cpu资源消耗,并且也不会干扰测试的进行(21讲会详细讲述)。


配置结果可以通过iptables来查看,见下图:


2)规避文件句柄坑


ulimit -HSn 1000000

需要注意上述命令只对本终端有效,建议修改/etc/security/limits.conf。

上述设置确保单个进程能够打开的句柄数量为100万。

由于Nginx是多进程程序,所以可以配置多个进程的方式来支持2000万连接,理论上至少需要20个进程才能达到。


3)关闭rp filter设置


由于TCPBurn采用了IP欺骗(原理类似流量复制工具TCPCopy,可参考课程TCPCopy相关部分),系统如果设置rp filter则会干扰测试的进行。

由于被测试的服务器配置了rp filter过滤,为简单起见,在服务器端关闭所有rp_filter设置。


4)路由设置


由于TCPBurn采用IP欺骗的方式来模拟大量客户端连接,需要在服务器端配置路由,使其响应能够回到发送请求的客户端虚拟机上。

客户端虚拟机利用了7台虚拟机,所在的IP地址跟欺骗的IP网段地址对应关系如下:

192.168.25.121   192.168.100.0

192.168.25.122   192.168.101.0

192.168.25.123   192.168.102.0

192.168.25.124   192.168.103.0

192.168.25.125   192.168.104.0

192.168.25.126   192.168.105.0

192.168.25.127   192.168.106.0


在 服务端进行路由设置:

route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.25.121

route add -net 192.168.101.0 netmask 255.255.255.0 gw 192.168.25.122

route add -net 192.168.102.0 netmask 255.255.255.0 gw 192.168.25.123

route add -net 192.168.103.0 netmask 255.255.255.0 gw 192.168.25.124

route add -net 192.168.104.0 netmask 255.255.255.0 gw 192.168.25.125

route add -net 192.168.105.0 netmask 255.255.255.0 gw 192.168.25.126

route add -net 192.168.106.0 netmask 255.255.255.0 gw 192.168.25.127


上述路由设置的作用是请求从哪一台虚拟机过来,其响应就回到哪一台虚拟机。


3、服务器端Nginx部署安装


我们需要部署一个消息推送Nginx服务,用来支持2000万模拟用户的消息推送服务 。


具体安装请参考官网:https://github.com/wandenberg/nginx-push-stream-module


N ginx配置参考下图:

上图中配置了20个进程,每一个进程支持1048576个连接,理论上可以支持2000万并发连接(1048576×20 > 20000000)。


Nginx其它配置如下:

监听端口采用8080端口。


消息推送相关配置参数见下面两张图:


完成上述步骤后,消息推送服务已经部署好,直接启动Nginx:

./nginx


Nginx就可以等待用户发送请求过来。


4、客户端TCPBurn部署安装

tcpburn(TCPBurn是由tcpburn和 intercept组成)运行,首先需要intercept的配合(具体工作原理图可以参考TCPCopy部分课程)。


intercept工具的主要功能是截获Nginx消息推送服务的响应数据包,配合tcpcopy和tcpburn工具来完成用户会话回放。没有intercept的配合,tcpburn就无法工作。


1)intercept安装运行


intercept安装参考官网github地址:https://github.com/session-replay-tools/tcpburn







请到「今天看啥」查看全文