`
soli
  • 浏览: 10986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】很多TIME_WAIT连接导致Cannot assign requested address的解决办法

阅读更多
转载自:badguy的个人空间


客户端connect服务器,执行一定时间后,接口返回-99的错误。

查看错误信息: OS error code  99:  Cannot assign requested address

猜想端口被用光的原因,网络搜索得到一个解释:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即 “Cannot assign requested address”。

通过netstat,的确看到很多TIME_WAIT状态的连接。

因为是调用API,所以无法对连接进行opt设置,只能通过设置系统配置得以解决。

解决办法:

执行命令修改如下2个内核参数:
//  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用。
# sysctl -w net.ipv4.tcp_timestamps=1

//  表示开启TCP连接中TIME-WAIT sockets的快速回收。
# sysctl -w net.ipv4.tcp_tw_recycle=1



关于 TIME_WAIT 状态,可参看这篇文章:TCP/IP状态图的TIME_WAIT作用
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics