使用超過 65535 個port - Linux

Table of Contents


因為port是16-byte,即使是64-bit Linux,在寫socket程式時,
最多只能用65535個port,也就是最多只能同時有65535個對外的
連結 (outbound connections)。若要突破這個限制,理論上可
以使用多張網路卡,因為每個IP理論上都可有65535個port,請問
有人實際上試過嗎? 這方法真的可行嗎?


--

All Comments

Dinah avatarDinah2011-09-05
這種情況多半就會配多台Server,不然就直接多 Bind IP
Jacob avatarJacob2011-09-07
IP Alias, 不須要特別加網卡, 你要先擔心Server效能不夠
Christine avatarChristine2011-09-11
1.用UDP,2.改用IPV6
Lucy avatarLucy2011-09-15
剛好試完IP alias回來 發現IP alias似乎不可行 即使IP不
同 bind同一個port時還是不行 server效能倒是不用擔心 之
Tristan Cohan avatarTristan Cohan2011-09-17
前模擬過約60萬個connections 可以跑得動 使用UDP受到另
Irma avatarIrma2011-09-22
一端的限制 沒辦法改 接下來準備要試看看實際再裝一個NIC
Agatha avatarAgatha2011-09-26
若不行只好試IPV6
Tom avatarTom2011-09-27
我覺得你應該沒跑到60萬,是看到netfilter的數字吧
Damian avatarDamian2011-10-02
我是說模擬的 尚未真的試 這台server算是蠻powerful的
Quanna avatarQuanna2011-10-03
2TB memory, 8-socket Westmere EX, 32TB SSD
Sandy avatarSandy2011-10-06
是很powerful,不過現在有一個程式就能接60萬connection?
Rachel avatarRachel2011-10-07
可以看一下 /proc/`pidof xxx`/fd | grep socket | wc -l
Thomas avatarThomas2011-10-11
我是說模擬的 尚未真的試 如果真的試過的話 我就不會在煩
惱65535的限制了
Harry avatarHarry2011-10-15
我個人覺得IP Alias 沒問題,但是你 client 連到 server
Agatha avatarAgatha2011-10-17
有辦法確定真的 bind socket 到這些 IP, 而不是單一 IP
William avatarWilliam2011-10-19
這倒是確認過了 IP的確是IP alias設的不同IP 但不能bind
到同個port number
Ivy avatarIvy2011-10-21
你bind時, sin_addr有指明IP嗎?
Ingrid avatarIngrid2011-10-25
當然
Blanche avatarBlanche2011-10-28
你要先煩惱kernel也有opened fd上限這件事
Andy avatarAndy2011-11-02
找到問題的所在了 是2.6.38 mainline kernel的一個bug 在
Noah avatarNoah2011-11-03
大型server且使用大量memory和cpu下 某些極端的情況下會
Rachel avatarRachel2011-11-04
IP alias設的不同IP無法bind同一個port 後來移到
Daph Bay avatarDaph Bay2011-11-04
2.6.39 rc 後 就沒有這問題 可以使用超過 65535 個
Lauren avatarLauren2011-11-05
connections 這算是使用mainline或是rc版本的缺點之一 之
Hedy avatarHedy2011-11-10
前才file一個SCSI layer的bug在2.6.38 對大型server的
Kyle avatarKyle2011-11-14
IO效率可影響一倍以上