Linux内核参数net.ipv4.ip_local_port_range对服务器连接数影响的正确解释

首先明确一下该参数的意义:net.ipv4.ip_local_port_range表示本机作为客户端对外发起tcp/udp连接时所能使用的临时端口范围。

对于TCP连接,本机所能发起的tcp连接数受四元组(源地址*源端口*目标地址*目标端口)限制。

而对于UDP连接,本机所能发起的udp连接数则受二元组(源地址*源端口)限制。(此处借用二元组的概念,并不表示udp套接字的二元组标识)。

一个实际生产场景举例

我们知道,在使用nginx作反向代理服务器时,会作为客户端向后端负载发起连接,在不考虑最大打开文件数和其他配置影响的情况下:

作为TCP反向代理服务器:

本机IP为192.168.1.1,后端负载为tcp:192.168.1.2:80、tcp:192.168.1.2:80,net.ipv4.ip_local_port_range为40000-59999(即临时可用端口数为20000),那么Nginx所能维持的最大长连接数为1*20000*2*1=40000

作为UDP反向代理服务器:

本机IP为192.168.1.1,后端负载为udp:192.168.1.2:80、udp:192.168.1.2:80,net.ipv4.ip_local_port_range为40000-59999(即临时可用端口数为20000),那么Nginx所能维持的最大长连接数为1*20000=20000

如何突破端口数对Nginx连接数造成的限制

如果是tcp连接,根据公式:源地址*源端口*目标地址*目标端口,只需要简单的增加后端负载的数量即可。

如果是udp连接,根据公式:源地址*源端口,那么增加后端负载的数量是无意义的,可行的办法为增加源地址数量,即采用增加网卡或虚地址的方式提高可用源地址的数量,可以参考:https://www.nginx.com/blog/overcoming-ephemeral-port-exhaustion-nginx-plus/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒满阳光的午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值