码迷,mamicode.com
首页 > 系统相关 > 详细

Linux对外连接端口数限制

时间:2015-06-30 14:58:41      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:压力测试   epoll   tcp   

这两天做压力测试,发现了一个问题,当模拟TCP client对外发起连接数达到28000左右时,开始大量抛如下异常:

    java.net.BindException:Cannot assign requested address

    atsun.nio.ch.Net.connect0(Native Method)

    atsun.nio.ch.Net.connect(Net.java:364)

    atsun.nio.ch.Net.connect(Net.java:356)

    atsun.nio.ch.UnixAsynchronousSocketChannelImpl.implConnect(UnixAsynchronousSocketChannelImpl.java:326)

    atsun.nio.ch.AsynchronousSocketChannelImpl.connect(AsynchronousSocketChannelImpl.java:195)

    atcom.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对外连接端口数限制

标签:压力测试   epoll   tcp   

原文地址:http://blog.csdn.net/wujunokay/article/details/46695065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!