Nginx提示Cannot assign requested address

nginx接收了很多请求,进行代理的时候发起tcp连接,这时会占用一个未被使用的随机端口,如果不改主机内核参数,就会造成端口不够用的情况,提示Cannot assign requested address

解决方法1:

调低time_wait状态端口等待时间:

  1. 调低端口释放后的等待时间,默认为60s,修改为15~30s

sysctl -w net.ipv4.tcp_fin_timeout=30

  1. 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用

sysctl -w net.ipv4.tcp_tw_reuse=1

  1. 修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1

sysctl -w net.ipv4.tcp_tw_recycle=1

解决方法2

增加可用端口port_range:

  1. 确认port_range范围

# sysctl -a |grep port_range

net.ipv4.ip_local_port_range = xxx xxx

  1. 修改配置

# vi /etc/sysctl.conf

net.ipv4.ip_local_port_range = 1024 65535

改完后,执行命令“sysctl -p”使参数生效。

相应的,应该继续适配地修改主机内核参数,否则会被告警:

修改nf_conntrack配置:

net.nf_conntrack_max = 4194304

net.netfilter.nf_conntrack_tcp_timeout_established = 300

net.netfilter.nf_conntrack_max = 2097152

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值