ConnectException: Cannot assign requested address (connect failed)

原因

在存在大量短连接的情况下,虽然 socket 正常关闭,但默认60s后释放,而不是立即释放,所以处于TIME_WAIT状态。Linux 连接端口(65535)用尽,就会造成这个异常。

查看

查看进程,有很多 TIME_WAIT 状态的。

netstat -a | grep -i time_wait

总数

netstat -ant | grep -i time_wait | wc -l

解决

注意:需root权限

1. 临时修改 sysctl

sysctl -w     # 临时修改指定系统参数的值-p     # 从指定的文件加载系统参数,如不指定则加载/etc/sysctl.conf-a     # 显示所有系统参数
# 端口释放后的等待时间,默认为60s
sysctl -w net.ipv4.tcp_fin_timeout=30# 或者更快回收设置
# 开启对于TCP时间戳的支持,0关闭,则下面两项设置不起作用
sysctl -w net.ipv4.tcp_timestamps=1# 客户端设置
# 允许端口重用,只对客户端起作用,开启后客户端在1s内回收time-wait socket
sysctl -w net.ipv4.tcp_tw_reuse=1# 开启TCP连接快速回收time-wait socket资源,默认为0关闭
# 客户端不需要开启
# 非高并发服务器不建议开启,开启后在 3.5*RTO 内回收,RTO 200ms~ 120s,具体时间视网络状况
sysctl -w net.ipv4.tcp_tw_recycle=1# 另外
# 查看可用端口范围,默认 32768~60999,不到3w
sysctl -a | grep port_range# 可设置tcp_max_tw_buckets
# 当 time_wait 数量等于 tcp_max_tw_buckets,不产生新的 time_wait
sysctl -w net.ipv4.tcp_max_tw_buckets=5000

或者

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recyclesysctl -p  

2. 永久修改

将配置写入 /etc/sysctl.conf。

vim /etc/sysctl.conf# 添加
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1sysctl -p

其他:

非高并发的情况下,注意检查是否代码bug,是否循环不断创建连接造成。

Linux Cannot assign requested address相关推荐

  1. Linux客户端连接报错:Cannot assign requested address

    前言 在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的连接数上限,运行了一段时间后报错:Cannot assign requested address 网上查了下"Ca ...

  2. Linux网络编程,bind:error:Cannot assign requested address,Ubuntu网络桥接

    一:问题:刚开始学习Linux网络编程,第一次使用bind函数出现Cannot assign requested address,错误.在网上找了很多帖子但是都没有解决. 二: 问题一:也就是网上大部 ...

  3. 记录一次etcd报错: listen tcp xxx.xxx.xxx.xxx:2380:bind: cannot assign requested address

    记录一次etcd报错 背景 问题定位 问题排查 解决方案 小结 背景 今天打算在腾讯云环境上安装k8s(采用ansible脚本自动化部署安装),当安装完etcd之后,发现启动报错. 机器:腾讯云服务器 ...

  4. ssh_init: Network error: Cannot assign requested address的解决办法

    使用pscp从windows传文件到linux时,使用命令: pscp source_file   username@linux_ip:dst_dir 有时候会报错:ssh_init: Network ...

  5. Cannot assign requested address解决办法

    问题原因: TCP/IP的状态图: "Cannot assign requested address."是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然 ...

  6. 阿里云配置服务器报:bind: cannot assign requested address

    阿里云服务器写网络程序时必须使用阿里云服务器的内网ip,不是他的公网ip,访问时是公网ip.具体可见下面这篇文章,十分感谢!!!!使得我写的小程序可以在服务器上运行,和前端小伙伴项目可以进行下去. 参 ...

  7. 对于高并发短连接造成Cannot assign requested address解决方法

    对于高并发短连接造成Cannot assign requested address解决方法 参考文章: (1)对于高并发短连接造成Cannot assign requested address解决方法 ...

  8. nginx 报错 99: Cannot assign requested address

    为什么80%的码农都做不了架构师?>>>    nginx 报错 99: Cannot assign requested address net.ipv4.ip_local_port ...

  9. java.net.NoRouteToHostException: Cannot assign requested address

    启动脚本 jmeter.sh -n -t test.jmx -l result.jtl 参数说明 - h 帮助 -> 打印出有用的信息并退出 - n 非GUI模式 -> 在GUI模式下进行 ...

  10. Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested address

    使用redis-benchmark做基准测试时提示错误: Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested ...

最新文章

  1. 004_URL 路由 - 对磁盘文件的请求进行路由
  2. 【 C 】队列的链式存储实现
  3. 合理消费你的86400秒
  4. bst latex 最大作者数_latex 参考文献作者是三个以上时如何处理?
  5. 首批唯一!阿里云视频直播服务获信通院首批唯一认证
  6. 驻定相位原理(POSP)的简单应用
  7. Windows Server 2016及System Center 2016正式商用
  8. QT学习笔记:常用快捷键总结表
  9. layui实现select下拉选择框组件(含代码、案例、截图)
  10. Bootstrap HTML编码规范之属性顺序
  11. elementui 嵌套表单验证_elementUI 表单嵌套表格验证,日期选择器联动限制等写法
  12. 原创内容将成网络视频的一支奇军
  13. 记录一次nginx 配置https 强制http转发到https
  14. colorui 使用iconfont图标
  15. typora插入文件到服务器,写作神器Typora入门指南
  16. 搭建ASP环境-win7安装IIS并运行ASP程序
  17. Web前端开发的项目开发流程
  18. 我的阅读习惯 俞敏洪
  19. (二)基于kubernetes(1.25.2) 进行基础prometheus监控
  20. IC验证培训——SystemVerilog通用程序库(上)

热门文章

  1. AAAI2020论文列表(中英对照)
  2. 3DMax如何将一个整的模型将里面组件都分离出来
  3. Unity Rendering Mode
  4. 主流量化交易策略:统计套利交易策略
  5. linux locale 编译,Linux locale 缺失和安装
  6. 跨境电商独立站转化率提升神器-SaleSmartly
  7. 读研了,博客不更新嘞
  8. 从云到「链」,京东云成为中国第四朵云背后
  9. 仿照苏宁易购小程序页面
  10. 可重入锁模拟三个线程之间的通信