我們有一個應用程序服務器,在網絡發生擁塞時(在客戶端站點),觀察到發送TCP窗口大小爲0的報頭。誰將TCP窗口大小設置爲0,Indy或Windows?
我們想知道它是Indy還是負責調整TCP窗口大小從標稱64K調整到可用吞吐量的底層Windows層。
而且我們可以在它變爲0時採取行動(沒有任何事情發送,用戶等待=>不好)。
因此,任何信息,鏈接,指向印碼,歡迎...
免責聲明:我不是一個網絡專家。請保持這個答案對我來說是可以理解的;-)
注意:它是Windows Server 2003 SP2上的Indy9/D2007。
更多血淋淋的細節:
TCP零窗口情況發生在與DB服務器通話的中間層。
它發生在最終用戶抱怨客戶端應用程序變慢的相同時刻(這是觸發網絡調查的原因)。
已經確定了導致瓶頸的兩個主要網絡問題。
TCP零窗口發生在有網絡擁塞時,但可能由或可能不是由它造成的。
我們想知道什麼時候發生,並且有辦法在代碼中執行某些操作(至少記錄日誌)。
因此,核心問題是誰將窗口大小設置爲0以及在哪裏?
哪裏掛鉤(在印地?)知道什麼時候發生這種情況?
核心問題是誰將窗口大小設置爲0以及在哪裏?更新問題... – 2010-06-08 22:11:34
TCP堆棧(在本例中是Windows Server的一部分)將窗口大小設置爲零,但是這是因爲運行在服務器上的應用程序(Indy?)沒有讀取數據。 – 2010-06-08 22:35:31
因此,如果中間層由於網絡阻塞而無法傳送到客戶端應用程序,它可能會停止讀取來自數據庫服務器的數據,然後該數據庫會導致操作系統將tcp窗口大小設置爲0 ...並且每個人都在等待事情變好。對? – 2010-06-09 00:22:05