我正在寫一個網絡服務,我的目標是高併發性。出於某種原因,當我嘗試連接到第二萬八千二百三十四插座,我得到:無法打開超過28234個插座?
[Errno 99] Cannot assign requested address
客戶是用Python編寫的服務器端被寫入在Haskell。我在ubuntu 11.04上運行這個,並且:
$ ulimit -n
1048576
我該如何克服這個限制?
我正在寫一個網絡服務,我的目標是高併發性。出於某種原因,當我嘗試連接到第二萬八千二百三十四插座,我得到:無法打開超過28234個插座?
[Errno 99] Cannot assign requested address
客戶是用Python編寫的服務器端被寫入在Haskell。我在ubuntu 11.04上運行這個,並且:
$ ulimit -n
1048576
我該如何克服這個限制?
通常的解決方法是在主機上創建額外的IP地址,只要您將套接字綁定到接口,每個IP就會根據dan_waterworth的回答獲得額外的臨時端口範圍。
微軟對這裏的主題討論:
http://msdn.microsoft.com/en-us/library/cc150670(v=vs.85).aspx
的臨時端口範圍集:
/proc/sys/net/ipv4/ip_local_port_range
防止創建更多的連接。
這是有點奇怪的28232 <28284'。 – 2011-06-05 18:21:35
@ Steve-o,最後一個失敗,範圍可能包括在內。 – 2011-06-05 18:25:13
哦,這是與你寫84和34時的問題一樣的錯字。 – 2011-06-05 18:29:33
只是出於好奇,爲什麼你需要很多的插座? – Ikke 2011-06-05 17:23:13
您正試圖同時收聽超過28000?你只會用完端口。 – 2011-06-05 17:26:20
'SOCK_STREAM'或'SOCK_DGRAM'? – 2011-06-05 17:31:35