今天使用python多线程请求服务时,出现Cannot assign requested address错误
网上找了下原因,大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。
client端频繁建立连接,而端口释放较慢,导致建立新连接时无可用端口。
netstat -a|grep TIME_WAIT tcp 0 0 e100069210180.zmf:49477 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49481 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49469 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49505 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49547 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49513 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49543 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49571 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49488 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49582 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49476 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49462 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49561 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49259 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49371 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49455 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49572 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49509 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49546 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49539 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49468 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49496 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49313 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49479 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49486 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49452 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49500 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49447 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49580 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49565 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49454 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49499 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49494 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49591 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49566 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49557 e100069202104.zmf.tbs:websm TIME_WAIT tcp 0 0 e100069210180.zmf:49495 e100069202104.zmf.tbs:websm TIME_WAIT
解决办法
执行命令修改如下内核参数 (需要root权限)
调低端口释放后的等待时间,默认为60s,修改为15~30s:
sysctl -w net.ipv4.tcp_fin_timeout=30
修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用:
sysctl -w net.ipv4.tcp_timestamps=1
修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1:
sysctl -w net.ipv4.tcp_tw_recycle=1
允许端口重用:
sysctl -w net.ipv4.tcp_tw_reuse = 1
相关推荐
主要介绍了 Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突的相关资料,需要的朋友可以参考下
底层报错 error:cannot assign requested address 原因 并发场景下 client 频繁请求端口建立tcp连接导致端口被耗尽 解决方案 root执行即可 sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项...
Cannot assign configuration entry 'pluginArtifacts' with value '${plugin.artifacts}' of type java.ut
Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>' 点开错误的文件,标注错误的地方是这样的一段代码: import {normalTime} from './timeFormat'; module....
三大框架精辟详解,堪比圣经,读后让人豁然开朗,熠熠生辉!
Mar 21 21:25:02 VM_0_9_centos httpd: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 Mar 21 21:25:02 VM_0_9_centos httpd: (98)Address already in use: AH00072: make_...
问题描述: 当想替换字符串内的部分习惯表述时报错,源码如下: num1 = int(input(请输入起始序数n1:)) num2 = int(input(请输入结束序数n2:)) fuc = input(请输入以n为变量的通项公式(eg:2*n+1):) ...
主要给大家介绍了关于Vue报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>' 的解决方法,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
主要介绍了Golang你一定要懂的连接池实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
基于dubbo2.5.8,修改了服务提供者protocol:host 属性,用于docker容器 -p 绑定端口 使用主机IP时,或者虚拟网络环境,解决网卡绑定错误问题 BindException: Can't assign requested address,慎用有不安全性,配置...
:set assign-address [:pick $assign-address 0 ([:len $assign-address] -3)] :if ($assign-address != $new-address) do={ /ip address set [/ip address find comment=$i] address=$new-address network=$new-...
针对iOS 对象的属性的关键字(retain/assign/readonly等)的区别。彻底解决您的疑惑。
对于Retain和Assign属性的理解
retain和copy还有assign的区别
详细讲解了ios中常用关键字的使用方法的区别,着重讲解了assign,retain,copy之间的区别
非常好用的总结,Verilog中-reg和wire-用法和区别以及always和assign的区别
object-assign(c) Sindre Sorhus@license MIT
.NET数据库连接函数调用 .NET数据库连接函数调用 .NET数据库连接函数调用 .NET数据库连接函数调用.NET数据库连接函数调用 .NET数据库连接函数调用
SyntaxError: can't assign to conditional expression expression是表达式,就是加减乘除等各种运算符号连接起来的式子(statement是语句,如if语句,while,复制语句等); 三目运算中表达式只能作为左值 修改后:...