首页/网络/网络排障速查/本地端口耗尽(Cannot assign requested address)
本包目录(235 条)

本地端口耗尽(Cannot assign requested address)

客户端报 connect: Cannot assign requested address 多为本地临时端口用尽:短连接频率乘保持时间超出端口池容量;靠 tw_reuse、扩大端口范围与连接池三管齐下解决。

网络排障速查网络更新于 2026-10-12

确认与量化

确认与量化
curl -sS -o /dev/null --connect-timeout 3 http://10.0.0.5:80/; echo "rc=$?"
ss -s | grep -i timewait
ss -Htan '( dport = :80 or dport = :443 )' | wc -l
cat /proc/net/sockstat | grep -i tcp
sysctl net.ipv4.ip_local_port_range
报错bind: Cannot assign requested address(EADDRNOTAVAIL)
资源ip_local_port_range 定义的本地端口池,默认约 2.8 万
缓解tcp_tw_reuse=1、扩大端口范围、改长连接/连接池
本质只有到同一目标四元组的连接才真正争抢端口
判定方法:同时看到 TW 数量接近端口池上限、且报错集中在高频外连的进程,即可确认;否则要排查是否 fd 或内存不足导致 bind 失败。

易错点

  • 把该报错当成远端拒绝:它其实是本机资源不足
  • 只扩大端口范围不做连接复用,QPS 上万后仍会打满

数据来源与参考

  • man 7 ip(EADDRNOTAVAIL 语义)
  • Linux 内核文档:ip_local_port_range

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌