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资源的回收率
总结
以上是针对系统层的参数调优
本文由 momoker 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Dec 9,2024