这个 TCP 问题你得懂:Cannot assign requested address

403 说明权限不足,也就是说我们的子系统到鉴权中心拉取权限失败了。直接登录到子系统服务器,手动执行拉取权限程序,的确是拉不到。

我的推测没有问题,难道网络不通了?telnet 目标端口试试,然后 Linux 给我返回了这个错误信息:

Cannot assign requested address

原因

产生这个错误的原因是由于 Linux 分配的客户端连接端口用尽,无法建立 socket 连接导致的。

我们都知道,建立一个连接需要四个部分:目标 IP,目标端口,客户端 IP 和客户端端口。其中前三项是不变的,只有客户端端口不断变化。

那么在大量频繁建立连接时,而端口又不是立即释放,默认是 60s,就会出现客户端端口不够用的情况。

这就是这个问题的本质。

接下来使用两个命令来验证一下:

查看连接数:

netstat -ae | wc -l

netstat -ae | grep TIME_WAIT | wc -l

查看可用端口范围:

sysctl -a | grep port_range

net.ipv4.ip_local_port_range = 50000 65000

结果就是连接数是远大于可用端口数的。

解决

怎么解决呢?有两个方案:

  1. 调低 TIME_WAIT 时间

  2. 调高可用端口范围

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值