我目前正在使用模擬大量用戶的自動測試客戶端測試服務器。服務器和客戶端都是用Java編寫的。客戶端爲每個用戶打開一個tcp/ip連接。服務器和客戶端都在Ubuntu linux上運行,客戶端在11.04上運行,服務器在10.04上運行。運行到java.net.bindexception中的問題無法分配請求的地址
測試進行得很順利,直到27000個同時打開的連接,之後我決定跳到36000(服務器和客戶端資源並不都是27000用完的,所以我決定做一個稍微大一點的跳轉)。 當我試圖運行測試36K我得到了在客戶端以下異常:
- java.net.BindException:不能分配請求的地址
據我所知,在36k我應該仍然有空閒的端口,因爲其他機器上運行的其他端口並且tcp限制在2^16這是65536的端口號。現在,因爲它是Linux,我還設置用戶的打開文件數爲100k ulimit -n 100000. 但我仍然得到相同的異常。
我想知道還有什麼可能是所提到的異常的可能原因,或者在某些其他方式的Linux限制傳出連接的數量?
由於提前,
海倫芬
感謝mark4o的解釋和解決方案,你是現貨。 – Zapkhiel 2011-05-27 11:15:44