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

转载自:[url=http://www.51testing.com/?uid-66821-action-viewspace-itemid-147278]badguy的个人空间[/url]


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

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

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

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

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

解决办法:

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

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


关于 TIME_WAIT 状态,可参看这篇文章:[url=http://soli.iteye.com/blog/2112071]TCP/IP状态图的TIME_WAIT作用[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值