Linux对外连接端口数限制
2014-05-28 10:16
141 查看
转自:http://blog.sina.com.cn/s/blog_5669faf70100xtyi.html
这两天做压力测试,发现了一个问题,当模拟TCP client对外发起连接数(客户端本机对外发起连接的端口称为"客户端口",注意此处不是“服务端口”)达到28000左右时,开始大量抛如下异常:
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:364)
at sun.nio.ch.Net.connect(Net.java:356)
at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implConnect(UnixAsynchronousSocketChannelImpl.java:326)
at sun.nio.ch.AsynchronousSocketChannelImpl.connect(AsynchronousSocketChannelImpl.java:195)
at com.aliyun.talk.mon.stack.comm.AsyncConnection.connect(AsyncConnection.java:85)
研究发现,Linux对外的随机分配端口是由一定限制的,理论上单机对外的端口最大值为65535,除去一些保留端口和被占用端口外,也应该在6W左右,但实际上单机建立对外连接时,默认不超过28232个连接。
执行以下命令就很清楚原因了:
$ cat /proc/sys/net/ipv4/ip_local_port_range
输出结果为:
32768 61000
这就是Linux随机分配端口的范围,如果在该范围内有被占用的端口,那么连接数肯定小于28232.如果想更改这个范围,可以执行以下命令:
# echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range
这两天做压力测试,发现了一个问题,当模拟TCP client对外发起连接数(客户端本机对外发起连接的端口称为"客户端口",注意此处不是“服务端口”)达到28000左右时,开始大量抛如下异常:
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:364)
at sun.nio.ch.Net.connect(Net.java:356)
at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implConnect(UnixAsynchronousSocketChannelImpl.java:326)
at sun.nio.ch.AsynchronousSocketChannelImpl.connect(AsynchronousSocketChannelImpl.java:195)
at com.aliyun.talk.mon.stack.comm.AsyncConnection.connect(AsyncConnection.java:85)
研究发现,Linux对外的随机分配端口是由一定限制的,理论上单机对外的端口最大值为65535,除去一些保留端口和被占用端口外,也应该在6W左右,但实际上单机建立对外连接时,默认不超过28232个连接。
执行以下命令就很清楚原因了:
$ cat /proc/sys/net/ipv4/ip_local_port_range
输出结果为:
32768 61000
这就是Linux随机分配端口的范围,如果在该范围内有被占用的端口,那么连接数肯定小于28232.如果想更改这个范围,可以执行以下命令:
# echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range
相关文章推荐
- Linux对外连接端口数限制
- Linux对外连接端口数限制
- 《鸟哥linux2》-阅读摘要-第7章-限制linux对外连接的端口
- 3.限制Linux对外联机的端口
- linux 向外TCP最大连接只能打开28232个端口限制tuning(转)
- 鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口
- 连接linux上服务失败和打开防火墙对端口限制
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 修改linux的SSH远程连接端口 技巧
- linux下命令行可以连接远程数据库而php的mssql_connect()却不可以的解决方案及linux对外远程访问拒绝
- 在Linux上使用iptables命令开启对外访问的网络端口
- linux 修改 ssh端口 限制ip登陆
- Linux下突破连接限制实现高并发量服务器
- 一个用来统计当前linux连接某个端口的IP数目的语句
- LINUX开启允许对外访问的网络端口的命令
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- linux和windows查看连接和端口占用
- 提高linux的连接限制
- Windows Server 2008远程连接人数限制修改及修改端口