2017-03-20 22 views
1

即使我正確地終止一切,當我檢查現有的HTTP連接,我看他們沒有終止如何完全終止的HttpWebRequest

例如,當我通過啓動不同的任務

我看到

開200個併發連接
158 Established HTTP connections 
927 TimeWait 
95 SynSent 
24 LastAck 
6 CloseWait 
34 FinWait 

更糟的部分是,TIMEWAIT的數量不斷增加,每分鐘

那麼,如何防止此類是起訴發生?

過了一會兒,窗口變得無法作出任何新的請求

當我使用webproxies發生此問題:當我使用不同的代理200個連接Too many proxy connection kills window's resolving hosts ability

這裏

enter image description here

回答

1

TimeWait狀態下的連接可能會產生性能問題。

首先,看一看TCP狀態圖,

https://en.wikipedia.org/wiki/File:Tcp_state_diagram_fixed_new.svg

這是一個機器的TCP後TCP連接的狀態已經發送的ACK段響應於FIN段從它的對等接收(在1981年的http://www.ietf.org/rfc/rfc793.txt中定義了TCP的RFC 793中的細節)。在此狀態期間,套接字資源(包括TCB(TCP控制塊)和當然的端口)不會發布到操作系統。超時過期後,套接字資源將釋放到操作系統。最初的原因是要處理可能發生在不可靠媒體中的同事之間的兩位將軍問題。連接將在TimeWait中,直到具有取決於操作系統的默認值的可配置超時。

這些鏈接可以幫助你在Windows中設置的參數TcpTimedWaitDelay的:

https://technet.microsoft.com/en-us/library/cc938217.aspx http://msdn.microsoft.com/en-us/library/ee377084%28v=bts.10%29.aspx

它說的默認值爲240秒,但我爲我的測試中,我經歷了低倍(60〜 120)。

無論如何,今天的網絡更可靠,而要求高性能和吞吐量的Web服務應該降低這個價值。我建議將其設置爲5秒。如果你想更保守一點,將其設置爲30秒。

其他可能對您有用的參數是Windows允許客戶端打開的最大短暫端口數。 Windows Server默認限制臨時TCP端口的最大數量。在某些Windows中,此值可能爲5000.您可以通過在註冊表中設置值MaxUserPort來更改此行爲。

+0

非常感謝。你能告訴我確切的註冊表名稱來設置兩個值嗎?最大TCP連接的數量和更改TimeWait的默認等待值? for windows 8.1 – MonsterMMORPG

+0

@MonsterMMORPG,HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ MaxUserPort和TcpTimedWaitDelay。它在鏈接中,我相信它們對於Windows 8.1是一樣的。如果它們不存在,則必須添加它們。 – rodolk

+0

是的,我認爲它應該添加。無論如何,我可以驗證他們正在工作?我的意思是像一些cmd命令等? – MonsterMMORPG

相關問題