Linux對外連線埠數限制
這兩天做壓力測試,發現了一個問題,當模擬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
相關文章
- SQL的外連線對內部表的限制SQL
- Linux檢視埠併發連線數Linux
- MySql 限制連線程式數MySql線程
- 統計埠連線數
- profile限制user連線session數Session
- 外網連線內部區域網的方法--ip 埠對映
- Windows TCP連線數限制解決WindowsTCP
- 使用串列埠連線到Linux串列埠Linux
- [原創] LINUX ES4.0 中限制TELNET連線數Linux
- Tengine限制連線數和白名單功能
- Linux 檢視對外開放埠Linux
- Linux中連線埠命令有哪些?Linux
- nginx如何限制併發連線請求數?Nginx
- nginx 限制使用者併發連線數Nginx
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- Linux無法連線外網Linux
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- 利用profile限制某使用者的連線數
- 內連線、外連線
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- Linux 預設連線數Linux
- 檢視Linux連線數Linux
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- 轉:linux 下mysql指定連線的埠 或socketLinuxMySql
- Linux CentOS SSH埠限制及變更LinuxCentOS
- FTP資料埠連線FTP
- sql 內連線和外連線SQL
- 外連線與連線順序
- 內連線、外連線總結
- SQL SERVER 自連線、外連線SQLServer
- oracle外連線Oracle
- 例項解析外連線 內連線 自連線 全連線
- 詳解nginx的請求限制(連線限制和請求限制)Nginx
- 查詢重寫對全外連線無效
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- Linux apache怎麼限制併發連線和下載速度LinuxApache