[問題] 使用超過 65535 個port

看板Linux作者 (XXX)時間14年前 (2011/09/02 11:51), 編輯推噓1(1028)
留言29則, 5人參與, 最新討論串1/1
因為port是16-byte,即使是64-bit Linux,在寫socket程式時, 最多只能用65535個port,也就是最多只能同時有65535個對外的 連結 (outbound connections)。若要突破這個限制,理論上可 以使用多張網路卡,因為每個IP理論上都可有65535個port,請問 有人實際上試過嗎? 這方法真的可行嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.142.64.222

09/02 12:48, , 1F
這種情況多半就會配多台Server,不然就直接多 Bind IP
09/02 12:48, 1F

09/02 12:49, , 2F
IP Alias, 不須要特別加網卡, 你要先擔心Server效能不夠
09/02 12:49, 2F

09/02 13:32, , 3F
1.用UDP,2.改用IPV6
09/02 13:32, 3F

09/02 14:17, , 4F
剛好試完IP alias回來 發現IP alias似乎不可行 即使IP不
09/02 14:17, 4F

09/02 14:17, , 5F
同 bind同一個port時還是不行 server效能倒是不用擔心 之
09/02 14:17, 5F

09/02 14:19, , 6F
前模擬過約60萬個connections 可以跑得動 使用UDP受到另
09/02 14:19, 6F

09/02 14:20, , 7F
一端的限制 沒辦法改 接下來準備要試看看實際再裝一個NIC
09/02 14:20, 7F

09/02 14:21, , 8F
若不行只好試IPV6
09/02 14:21, 8F

09/02 14:53, , 9F
我覺得你應該沒跑到60萬,是看到netfilter的數字吧
09/02 14:53, 9F

09/02 14:57, , 10F
我是說模擬的 尚未真的試 這台server算是蠻powerful的
09/02 14:57, 10F

09/02 14:58, , 11F
2TB memory, 8-socket Westmere EX, 32TB SSD
09/02 14:58, 11F

09/02 15:02, , 12F
是很powerful,不過現在有一個程式就能接60萬connection?
09/02 15:02, 12F

09/02 15:03, , 13F
可以看一下 /proc/`pidof xxx`/fd | grep socket | wc -l
09/02 15:03, 13F

09/02 15:06, , 14F
我是說模擬的 尚未真的試 如果真的試過的話 我就不會在煩
09/02 15:06, 14F

09/02 15:06, , 15F
惱65535的限制了
09/02 15:06, 15F

09/02 15:19, , 16F
我個人覺得IP Alias 沒問題,但是你 client 連到 server
09/02 15:19, 16F

09/02 15:20, , 17F
有辦法確定真的 bind socket 到這些 IP, 而不是單一 IP
09/02 15:20, 17F

09/02 15:24, , 18F
這倒是確認過了 IP的確是IP alias設的不同IP 但不能bind
09/02 15:24, 18F

09/02 15:24, , 19F
到同個port number
09/02 15:24, 19F

09/02 17:43, , 20F
你bind時, sin_addr有指明IP嗎?
09/02 17:43, 20F

09/03 00:04, , 21F
當然
09/03 00:04, 21F

09/03 09:17, , 22F
你要先煩惱kernel也有opened fd上限這件事
09/03 09:17, 22F

09/03 11:31, , 23F
找到問題的所在了 是2.6.38 mainline kernel的一個bug 在
09/03 11:31, 23F

09/03 11:33, , 24F
大型server且使用大量memory和cpu下 某些極端的情況下會
09/03 11:33, 24F

09/03 11:36, , 25F
IP alias設的不同IP無法bind同一個port 後來移到
09/03 11:36, 25F

09/03 11:37, , 26F
2.6.39 rc 後 就沒有這問題 可以使用超過 65535 個
09/03 11:37, 26F

09/03 11:39, , 27F
connections 這算是使用mainline或是rc版本的缺點之一 之
09/03 11:39, 27F

09/03 11:42, , 28F
前才file一個SCSI layer的bug在2.6.38 對大型server的
09/03 11:42, 28F

09/03 11:43, , 29F
IO效率可影響一倍以上
09/03 11:43, 29F
文章代碼(AID): #1EO5BFUx (Linux)
文章代碼(AID): #1EO5BFUx (Linux)