Linux Cannot assign requested address
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相关推荐
- Linux客户端连接报错:Cannot assign requested address
前言 在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的连接数上限,运行了一段时间后报错:Cannot assign requested address 网上查了下"Ca ...
- Linux网络编程,bind:error:Cannot assign requested address,Ubuntu网络桥接
一:问题:刚开始学习Linux网络编程,第一次使用bind函数出现Cannot assign requested address,错误.在网上找了很多帖子但是都没有解决. 二: 问题一:也就是网上大部 ...
- 记录一次etcd报错: listen tcp xxx.xxx.xxx.xxx:2380:bind: cannot assign requested address
记录一次etcd报错 背景 问题定位 问题排查 解决方案 小结 背景 今天打算在腾讯云环境上安装k8s(采用ansible脚本自动化部署安装),当安装完etcd之后,发现启动报错. 机器:腾讯云服务器 ...
- ssh_init: Network error: Cannot assign requested address的解决办法
使用pscp从windows传文件到linux时,使用命令: pscp source_file username@linux_ip:dst_dir 有时候会报错:ssh_init: Network ...
- Cannot assign requested address解决办法
问题原因: TCP/IP的状态图: "Cannot assign requested address."是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然 ...
- 阿里云配置服务器报:bind: cannot assign requested address
阿里云服务器写网络程序时必须使用阿里云服务器的内网ip,不是他的公网ip,访问时是公网ip.具体可见下面这篇文章,十分感谢!!!!使得我写的小程序可以在服务器上运行,和前端小伙伴项目可以进行下去. 参 ...
- 对于高并发短连接造成Cannot assign requested address解决方法
对于高并发短连接造成Cannot assign requested address解决方法 参考文章: (1)对于高并发短连接造成Cannot assign requested address解决方法 ...
- nginx 报错 99: Cannot assign requested address
为什么80%的码农都做不了架构师?>>> nginx 报错 99: Cannot assign requested address net.ipv4.ip_local_port ...
- java.net.NoRouteToHostException: Cannot assign requested address
启动脚本 jmeter.sh -n -t test.jmx -l result.jtl 参数说明 - h 帮助 -> 打印出有用的信息并退出 - n 非GUI模式 -> 在GUI模式下进行 ...
- 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 ...
最新文章
- 004_URL 路由 - 对磁盘文件的请求进行路由
- 【 C 】队列的链式存储实现
- 合理消费你的86400秒
- bst latex 最大作者数_latex 参考文献作者是三个以上时如何处理?
- 首批唯一!阿里云视频直播服务获信通院首批唯一认证
- 驻定相位原理(POSP)的简单应用
- Windows Server 2016及System Center 2016正式商用
- QT学习笔记:常用快捷键总结表
- layui实现select下拉选择框组件(含代码、案例、截图)
- Bootstrap HTML编码规范之属性顺序
- elementui 嵌套表单验证_elementUI 表单嵌套表格验证,日期选择器联动限制等写法
- 原创内容将成网络视频的一支奇军
- 记录一次nginx 配置https 强制http转发到https
- colorui 使用iconfont图标
- typora插入文件到服务器,写作神器Typora入门指南
- 搭建ASP环境-win7安装IIS并运行ASP程序
- Web前端开发的项目开发流程
- 我的阅读习惯 俞敏洪
- (二)基于kubernetes(1.25.2) 进行基础prometheus监控
- IC验证培训——SystemVerilog通用程序库(上)