Linux对外连接端口数限制
這兩天做壓力測(cè)試,發(fā)現(xiàn)了一個(gè)問(wèn)題,當(dāng)模擬TCP client對(duì)外發(fā)起連接數(shù)達(dá)到28000左右時(shí),開(kāi)始大量拋如下異常:
????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)
????研究發(fā)現(xiàn),Linux對(duì)外的隨機(jī)分配端口是由一定限制的,理論上單機(jī)對(duì)外的端口最大值為65535,除去一些保留端口和被占用端口外,也應(yīng)該在6W左右,但實(shí)際上單機(jī)建立對(duì)外連接時(shí),默認(rèn)不超過(guò)28232個(gè)連接。
????執(zhí)行以下命令就很清楚原因了:
????$ cat?/proc/sys/net/ipv4/ip_local_port_range
輸出結(jié)果為:
????32768 ??61000
????這就是Linux隨機(jī)分配端口的范圍,如果在該范圍內(nèi)有被占用的端口,那么連接數(shù)肯定小于28232.如果想更改這個(gè)范圍,可以執(zhí)行以下命令:
????# echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range
轉(zhuǎn)載于:https://blog.51cto.com/tenderrain/1753399
總結(jié)
以上是生活随笔為你收集整理的Linux对外连接端口数限制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 生活中的一些感悟与记录
- 下一篇: Spring Boot——开发新一代Sp