netty模拟tcpClient高并发配置总结(1)

in 四月桐花 with 0 comment

netty作为客户端,在模拟高并发场景时,可以在一下几个方面进行调优

系统层(linux)

机器资源是限制tcp连接数的重要瓶颈,尤其是高并发创建client时,会大量使用系统资源,故需要了解系统有哪些限制,以及如何做参数调优

系统文件描述符

ulimit -n
ulimit -n [size]

该参数用来查看或修改linux的系统文件描述符,由于linux的每个tcp连接,都会占用一个文件(准确地说,linux是基于文件的设计思路)资源,netty所创建的每个client都会使用此资源,所以查看和扩大文件描述符的值可以有效突破瓶颈.
需要注意的是:不同的系统有不同的方式配置文件描述符,需要自己根据所部署的环境自行调整

端口范围 net.ipv4.ip_local_port_range

sysctl net.ipv4.ip_local_port_range
# 修改 /etc/sysctl.conf
net.ipv4.ip_local_port_range="32768 61000"
# 生效
sysctl -p

不同的系统都对网络连接的端口资源有所限制,如果主机的端口资源被限制为1000个,则tcp client同是存在最多不会超过1000.
系统端口资源最大值为65535,故配置的时候需要注意.

tcp协议优化

net.ipv4.tcp_fin_timeout

缩短 TIME_WAIT 的等待时间,释放端口资源

sysctl net.ipv4.tcp_fin_timeout
# 修改 /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
# 生效
sysctl -p

net.ipv4.tcp_tw_reuse

允许操作系统在 TIME_WAIT 状态的连接复用时,尽早地重新利用该端口

sysctl net.ipv4.tcp_tw_reuse
# 修改 /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
# 老版本内核,较新的内核无此配置项
net.ipv4.tcp_tw_recycle = 1
# 生效
sysctl -p

高并发短链接的场景,需要系统层对tcp连接状态进行优化,其中较为重要的就是TIME_WAIT(tw)状态,减少tw的时间可以有效提高tcp资源的回收率

总结

以上是针对系统层的参数调优