Cannot assign requested address

转载 2012年03月22日 09:48:26

场景:使用libcurl 向本机的nginx 发请求,每隔一段时间,会出“Couldn't connect to server”,此时使用telnet 也会有错,Couldn't connect to server,同时观察netstat 发现很多TIME_WAIT。

分析:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”

解决:

1. 在程序中设置立即关闭不经历TIME_WAIT,以重用端口

int bReuseaddr=1;
setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(int));

2. 修改内核参数

vi /etc/sysctl.conf 在末尾添加以下内容:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

使配置生效: /sbin/sysctl -p


相关文章推荐

Cannot assign requested address解决办法

“Cannot assign requested address.”是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TI...

TIME_WAIT引起Cannot assign requested address报错

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时...
  • hguisu
  • hguisu
  • 2013年08月25日 13:37
  • 19882

bind: Cannot assign requested address

今天写了一段socket代码,大致是这样的: struct sockaddr_in cliaddr; inet_aton("192.168.2.12", &ad...

Cannot assign requested address的解决办法

xshell客户端连续进行100000访问,却出现以了Cannot assign requested address的问题,原因是客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TI...

Cannot assign requested address解决办法

“Cannot assign requested address.”是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TI...

造成socket.error: [Errno 99] Cannot assign requested

http://blog.csdn.net/ying_593254979/article/details/11189915 在用python进行socket编程的时候,你可能会在进行conne...

Cannot assign requested address

[WARNING] FAILED org.mortbay.jetty.plugin.JettyServer@31f9b804: java.net.BindException: Cannot assig...

Cannot assign requested address 解决

redis连续进行访问,却出现以了Cannot assign requested address 报错解决 解决方法 vi /etc/sysctl.conf 永久生效 net.ipv4.t...

Redis:Cannot assign requested address的解决办法

今天想试一下redis,写了个程序,对redis连续进行100000访问,却出现以了Cannot assignrequestedaddress的问题,我起先是以为是redis的问题(可能承受不了这么多...

php连接memcahed出现Cannot assign requested address (99)的解决方法

今天在将服务器合并后,发现php偶尔会报出 Server *.*.*.* (tcp *****) failed with: Cannot assign requested address (99) 的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cannot assign requested address
举报原因:
原因补充:

(最多只允许输入30个字)