簡體   English   中英

連接太多時,傳出客戶端TCP端口將被阻塞

[英]Outgoing client TCP ports get blocked when there are too many connections

我有一個分發系統,用於在Windows的目標客戶端計算機上執行文件操作並在其中運行shell命令。 並且我使用了一個自定義的TCP端點來連接到駐留在服務器上的Windows服務。

現在,我已經創建了此工具,以便在一台計算機上創建該代理(客戶端)的多個實例,並針對服務器上的所有實例運行特定的作業集。 問題在於,啟動數百個代理后,客戶端計算機上的所有傳出TCP端口都會被阻塞。 每個代理都使用動態端口,並且正在偵聽單個服務器端口。

說,我有2000個代理在端口2000-3999上運行,並且都在偵聽服務器上的端口5111。 我在Windows事件日志中收到的錯誤消息如下:

TCP / IP無法建立傳出連接,因為最近使用了所選的本地端點來連接到同一遠程端點。 當以高速率打開和關閉傳出連接時,通常會發生此錯誤,從而導致所有可用的本地端口都被使用,並迫使TCP / IP將本地端口重新用於傳出連接。 為了最大程度地降低數據損壞的風險,TCP / IP標准要求從給定本地終結點到給定遠程終結點的連續連接之間經過的時間最少。

發生這種情況時,本機將無法再使用任何TCP端口。 我確實嘗試過更改注冊表中的某些TCP默認行為,但無濟於事。 打開連接之間的間隔在1到5秒之間。

無論測試需要進行積極的網絡活動,用於管理最佳延遲和/或以某種方式使Windows信任應用程序的任何解決方法?

事實證明,如果您打開的連接之間沒有適當的間隙,則由於攻擊行為,客戶端上的所有端口都將被阻塞。 最后,我通過將每次連接之間的延遲從1000毫秒增加到3000毫秒來連接所有代理。 我仍然要弄清楚它的動態性,畢竟在並行線程而不是進程中打開代理可能是一個更好的解決方案。 大量具有相同名稱的進程似乎對操作系統沒有吸引力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM