Linux上客户端向服务器发起大量请求:failed (99: Cannot assign requested address) while connecting to upstream,问题解决
1、查看系统当前tcp端口等待情况:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
2.修改以下系统参数:
(1) 编辑系统配置:
vim /etc/sysctl.conf
(2) 调低端口释放后的等待时间,默认为60s,修改为15~30s
sysctl -w net.ipv4.tcp_fin_timeout=30
(3) 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用
sysctl -w net.ipv4.tcp_timestamps=1
(4) 修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1
sysctl -w net.ipv4.tcp_tw_recycle=1
(5) 客户端可用端口范围
net.ipv4.ip_local_port_range = 10000 65000 -----意味着10000~65000端口可用
(6) 修改链接重利用
net.ipv4.tcp_tw_reuse=1
3、执行以下命令生效:
/sbin/sysctl -p