当前位置:   article > 正文

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

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/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/158576
推荐阅读
相关标签
  

闽ICP备14008679号