最近在压测TCP长连接其中遇到了一些问题:
1、TCP长连接大家知道在建立连接的过程中是一个标准的三次握手协议,而在进行整个握手协议的过程中客户端发出的请求会经过两个状态①、半连接状态 ②、全连接状态 我们可以通过三次握手协议的示意图来进一步了解这两个状态队列。
- 半连接和全连接指标可以通过命令查询:
- 半连接上限指标:cat /proc/sys/net/ipv4/tcp_max_syn_backlog
- 全连接上限指标:cat /proc/sys/net/core/somaxconn
- 其中还有一个参数:net.ipv4.ip_local_port_range = 10000 65535 ipv4可以使用的端口范围
- 修改的时候注意切换用户为root用户
修改完之后执行命令:/sbin/sysctl -p 刷新一下文件生效
2、由于要建立大量连接,再linux的/etc/sysctl.conf 文件中有几个有关TCP长连接的参数如: - net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; - net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 - 修改完毕之后,需要执行命令: sysctl -p 使参数生效。
3、当进行TCP连接压测的时候被压测的服务端(博主压测的时候场景为:客户端-Netty