今天使用python多线程请求服务时,出现Cannot assign requested address错误

网上找了下原因,大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。

client端频繁建立连接,而端口释放较慢,导致建立新连接时无可用端口。

netstat -a|grep TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT
tcp e100069210180.zmf: e100069202104.zmf.tbs:websm TIME_WAIT

解决办法

执行命令修改如下2个内核参数 (需要root权限) 
sysctl -w net.ipv4.tcp_timestamps=1  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收

Cannot assign requested address出现的原因及解决方案的更多相关文章

  1. 不能绑定到端口号:9194原因:Cannot assign requested address: JVM_Bind

    晚上将老服务器程序从win2008部署在新的云服务器win2012上,其实就是复制过去改改配置,启动时突然报不能绑定到端口号:9194原因:Cannot assign requested addres ...

  2. com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Cannot assign requested address: bind

    在发布 web service 时报错: Endpoint.publish(publishAddress, hl7MessageReveiver); com.sun.xml.internal.ws.s ...

  3. tomcat java.net.BindException: Cannot assign requested address 解决方法

    今天线上TOMCAT启动时遇到了下比较麻烦的问题,错误如下: 21-Apr-2016 15:14:19.077 SEVERE [main] org.apache.catalina.core.Stand ...

  4. TIME_WAIT引起Cannot assign requested address报错

    1.  问题描述 有时候用redis客户端(php或者java客户端)连接Redis服务器,报错:"Cannot assign requested address." 原因是客户端 ...

  5. Tomcat启动报错:严重: StandardServer.await: create[8005] java.net.BindException: Cannot assign requested address

    org.apache.catalina.core.StandardServer await        SEVERE: StandardServer.await: create[8005]:    ...

  6. Dubbo广播模式下报错:Can't assign requested address解决办法

    原因: 尝试使用Dubbo的multicast模式,发现一运行就报Can't assign requested address的错误,造成这种原因的主要是系统中开启了IPV6协议(比如window7) ...

  7. kafka.common.KafkaException: Socket server failed to bind to hdp1:9092: Cannot assign requested address.

    ERROR [KafkaServer id=1] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.K ...

  8. Tomcat启动异常 java.net.BindException: Cannot assign requested address: JVM_Bind

    从Apache官网下载的tomcat7,在MyEclipse中启动时抛出如下异常: 严重: StandardServer.await: create[localhost:8005]: java.net ...

  9. DataNode启动不成功——java.net.BindException: Port in use: localhost:0 Caused by: java.net.BindException: Cannot assign requested address解决办法

    爱折腾的人总是会出线各种奇怪的问题.记得之前听一位大师讲过,我们不能踩完前进路上的所有坑前进,而应该学会怎样避开前进路上的坑,踩得坑越多,可能你的经验越丰富,但是付出的时间代价可能不是经验能换来的.我 ...

随机推荐

  1. VR外包团队:长年承接VR虚拟现实外包(应用、游戏、视频、漫游等)

    北京动点飞扬软件,从事外包业务五年,长年承接全景VR视频,全景普通视频外包. 以下是全景VR视频案例(可操作,人不动景物不动,人移动,景物跟随) 欢迎联系我们QQ:372900288 TEL:1391 ...

  2. Python入门5

    装饰器 装饰器英文Decorator,自身是一个函数,用来包装其它的函数,实现在不改变原来代码的情况下,增加新的功能,返回一个修改后的函数对象, 装饰器功能: 1.装饰器也是函数 2.在不改变原有代码 ...

  3. Intellij IDEA +MAVEN+Jetty实现SpringMVC简单查询功能

    利用 Intellij IDEA +MAVEN+Jetty实现SpringMVC读取数据库数据并显示在页面上的简单功能 1 新建maven项目,配置pom.xml <project xmlns= ...

  4. bzoj1904: Musical Water-fence

    找出最高的木块,假设在这块木块上无限加水,就会形成一些水池,然后才向两侧溢出 用并查集维护当前在某个位置使水向左/右流动,水会流向哪个水池或从某一侧溢出浪费,当某个水池满时更新并查集 #include ...

  5. AVL的删除写法的一个错误

    今天在写AVL删除的时候犯了一个傻逼错误,调了很久,教训惨痛,引以为鉴. 树中允许有重复节点,如果删除的节点有重复,则只删除1个. AVL删除采取的方法是首先判断待删除节点是否存在,如果存在,那么判断 ...

  6. [I2C]I2C总线协议图解

    转自:http://blog.csdn.net/w89436838/article/details/38660631 1  I2C总线物理拓扑结构      I2C 总线在物理连接上非常简单,分别由S ...

  7. Software Development Principle

    Every great piece of software begins with customer's big idea. As a professional softeware developer ...

  8. 添加Web引用

  9. ADXL3xx: 读取 ADXL3xx 加速度传感器

    原文链接:https://www.arduino.cc/en/Tutorial/ADXL3xx ADXL3xx加速度传感器 本教程将为你展示如何读取Analog Devices的ADXL3xx系列加速 ...

  10. 02-C#入门(循环)

    记得第一次学编程的时候,就听说过一句话:“新手学习和掌握一门编程语言是很容易的,但是如果你学会了某种编程语言,再去学习新的语言,就很难掌握了”,现在深深地感受到了这方面的阻力. 其实流程控制.循环,包 ...