Cannot assign requested address 问题
来源:互联网 发布:淘宝怎么看评价星星 编辑:程序博客网 时间:2024/05/04 00:01
先声明,本文涉及到的知识是之前搜集到的,现在整理出来分享大家,虽然打上原创的tag,但还是向原创致敬!如果涉及到侵权的问题,请联系我,我会及时更改!
遇见这样的问题是在客户端大量向服务器发起connect连接时出现的,字面意思是“不能分配请求的地址”。
两种解决方案。1、设置TIME_WAIT
客户端频繁的连服务器,由于每次连接都在很短的时间内结束,而端口释放较慢,导致建立新连接时无可用端口(或者说是导致很多的TIME_WAIT,以至于用光了可用的端口号),所以新的连接没办法绑定端口,即“Cannot assign requested address”。通过netstat,的确看到很多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的快速回收
2、修改端口数
研究发现,Linux对外的随机分配端口是由一定限制的,理论上单机对外的端口最大值为65535,除去一些保留端口和被占用端口外,也应该在6W左右,但实际上单机建立对外连接时,默认不超过28232个连接。
执行以下命令就很清楚原因了:
$ cat /proc/sys/net/ipv4/ip_local_port_range
输出结果为:
32768 61000
这就是Linux随机分配端口的范围,如果在该范围内有被占用的端口,那么连接数肯定小于28232.如果想更改这个范围,本地端口范围的最小值必须大于或等于1024;而端口范围的最大值则应小于或等于65535。可以执行以下命令:
# echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range\
综述第一中方法相对来说不安全,第二种方法还是会受到一定限制(尽管提升到了65535-10000=55535),当然这两种方式如何选择还有个因素就是建立的TCP连接是否要保持,如果要保持,客户端这边也就是到了55535了,如果不保持随即释放,两种方法都可以参考
0 0
- Cannot assign requested address 问题
- Cannot assign requested address 问题
- Cannot assign requested address 问题
- Cannot assign requested address
- Cannot assign requested address
- Cannot assign requested address
- Cannot assign requested address
- bind: Cannot assign requested address
- Linux - Cannot assign requested address
- Cannot assign requested address: JVM_Bind
- Cannot assign requested address: JVM_Bind
- Cannot assign requested address: JVM_Bind
- BindException: Cannot assign requested address
- Cannot assign requested address解决办法
- Cannot assign requested address解决办法
- Cannot assign requested address 解决
- Cannot assign requested address: JVM_Bind
- Cannot assign requested address: JVM_Bind
- 原理与应用
- 一次迭代式开发的研究 笔记
- DlgProc对话框回调
- Java 与并发相关的系统原理 —— 参考博客文章链接汇总
- vs2012 格式化代码和快速注释快捷键(亲测)
- Cannot assign requested address 问题
- Darwin Streaming Server性能测试报告
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 安装信号与捕捉信号
- 联想键盘组合键
- IOS 设置 navigationItem.rightBarButtonItem leftBarButtonItem 字体按钮
- Java面试葵花宝典
- IOS UI调试reveal基本使用
- <算法>七桥问题
- 高并发IO技术