回答
你可以運行的臨時TCP端口的唯一方法是,如果你是客戶,你已經開了近64K的出站連接,而不是關閉他們在最後兩分鐘內。
這有時會發生在測試場景中,但它並不代表真實世界的情況,因此它沒有真正的興趣。
這種情況的症狀是連接時發生綁定錯誤。如果你沒有收到綁定錯誤,你就沒有這個問題。
我們使用Azure虛擬機中的Azure存儲,在Azure上遇到了這種情況。我們從錯誤中確認這是一個短暫的端口問題。此外,增加限制(從5k - > 2k)和減少重新使用的時間解決了這個問題。 從Azure VM轉到Azure存儲使用的是非常近的(1跳)10 GigE連接。每個存儲操作都使用新的TCP連接。默認情況下,Windows僅爲臨時端口保留5k端口。我們可以增加它,但這需要修改註冊表並重新啓動。當我們接近極限時,我更願意加油門。 – 2012-04-20 21:31:16
要獲得打開的連接列表,您可以使用netstat命令。與普遍認爲(其他答案)相反,短暫端口的數量是有限的(在Windows 2003上是4000,在更高版本上是16000,在大多數Linux上是16000)。還要注意,一旦它變得未使用,需要4分鐘才能釋放端口,因此它確實可能是一個問題。
有文章在MSDN和它打交道:http://msdn.microsoft.com/en-us/library/aa560610(v=bts.20).aspx
- 1. 如何在Windows中使用sqlite查找創建的臨時表?
- 2. 如何查找臨時表的來源
- 3. 客戶端使用asmx調用使用臨時端口嗎?
- 4. 如何查找c#中類中使用的接口數量?
- 5. 如何找到未使用的端口?
- 6. 如何在Windows中查找哪個程序正在使用端口80?
- 7. 跑道臨時端口?
- 8. 如何查找可用端口?
- 9. 檢查哪些端口正在使用
- 10. 查找在mysql中查詢使用的臨時空間
- 11. 如何查找正在使用的isbns
- 12. 如何在更新查詢中使用臨時變量?
- 13. 當使用帶有臨時端口的JMX服務器時,如何獲取服務器端口號?
- 14. Gnuwin32端口的「查找」?
- 15. 如何在ASP .NET中獲得客戶端的臨時端口號?
- 16. COM端口正在使用
- 17. 如何在constexpr函數中使用臨時變量?
- 18. 如何使用CoreMIDI在網絡上查找所有可用的MIDI端口?
- 19. 如何通過CommPortIdentifier查找COM端口
- 20. server.address()。端口正在使用nodejs中的隨機端口地址
- 21. 如何查找用於在Oracle sql developer中創建臨時表的查詢
- 22. 批處理腳本查找Apache Tomcat正在運行的端口
- 23. 如何找到正在嘗試連接的端口?
- 24. 客戶端如何查找服務器的端口號?
- 25. 如何查找當前使用哪個串行端口?
- 26. 如何在運行時使用C++在我的機器上檢測臨時端口範圍
- 27. Linux;如果我正在運行的程序使用某些端口,如何查找日誌?
- 28. 如何釋放端口正在使用的Visual Studio
- 29. 不知道如何騰出正在使用的Jupyter Notebook端口
- 30. 如何在終端Mac中臨時使用Python 3.6?
如果您跟蹤有多少你的應用程序已打開,那將是一個良好的第一級近似。由於UDP和TCP通過(本地IP,對等IP,本地端口,遠程端口)跟蹤會話 - 我可以使用任何單個端口連接成千上萬的連接,所以我非常懷疑你是否陷入了短暫的端口耗盡給少數同行或數十萬同齡人。在查看代碼以解決此問題之前,請檢查'netstat'輸出或您的平臺的'netstat'的等效項目以進行調試。也許文件描述符或套接字限制更可能。 – sarnold 2012-04-19 22:00:59
我們使用Azure虛擬機中的Azure存儲,在Azure上遇到了這種情況。我們從錯誤中確認這是一個短暫的端口問題。此外,增加限制(從5k - > 2k)和減少重新使用的時間解決了這個問題。問題是我們不想在每個虛擬機上執行此操作。 – 2012-04-20 21:28:03
Azure不會默認重複使用現有的連接? – sarnold 2012-04-20 21:39:30