2012-07-01 155 views
0

我在本地運行WCF服務時遇到問題。當我在本地運行服務時,從客戶端打開該通道的時間起,大約需要60多秒,直到我看到WCF服務的方法被調用。如果我連接到運行在我們臨時環境中的服務,它可以正常工作,並且沒有減速。WCF在虛擬機本地主機上運行時超時

  • 我在VirtualBox託管的虛擬機內部運行Windows Server 2008的新盒子上運行客戶端和服務。
  • IPV6對VM
  • 被禁用我有我的主機文件的引用,對客戶端和主機localhost上
  • 詳細日誌記錄指向,只顯示在客戶端上超時而產生的異常。登錄該服務只需要很長時間就顯示沒有錯誤,從請求開始到結束。
  • 我關閉了windows防火牆,沒有任何效果。
  • 客戶端和服務的所有配置文件都與登臺計算機相匹配。

沒有其他開發人員在我工作的地方有這個問題。我也沒有在運行windows7的單獨的盒子上有這個問題(不在虛擬機中)。我們的登臺服務器也都是虛擬機(Server 2008),儘管它們運行在不同的VM平臺上。

+0

如果您不通過WCF運行服務方法需要多長時間?即在客戶端的參數中創建一個單元測試和饋送,但完全運行在進程中。 – Chris

+0

@Chris如果我連接調試器並從頭到尾運行該方法,則需要的時間很少,不到一秒鐘。它只需要很長時間形成客戶端到服務,並從服務到客戶端 –

+0

明白了,只是幾個問題。平時需要多長時間?這只是這個具體的電話嗎?做後續的電話需要更少的時間? – Chris

回答

0

如果您發送非常小的請求並等待每個響應,這看起來像Nagle's algorithm擊中你。暫時測試disabling it

如果你開始看到這不是第一次調用服務,但只有在前10次左右後,纔可能是會話泄漏。這意味着,每個呼叫都會創建一個新的服務客戶端,然後忘記關閉它。在服務器上耗盡ServiceThrottlingBehavior.MaxConcurrentSessions之後,每個後續會話都必須等到先前的一次超時,然後才能成功。通過將CloseTimeout從其缺省值60秒減少並查看這是否是支配您所看到的超時。然後,當然,找到會話泄漏並關閉一個真正的修復。

如果您的情況都不是這樣,您可以配置service tracing並使用其輸出來更詳細地增強該問題。

+0

這只是一個需要這麼長時間的單個請求。很少有流量正在發送 –

+0

@AaronM - 編輯答案給你兩個更多的東西嘗試。 –

+0

我打開了跟蹤。沒有看到任何錯誤消息,也沒有任何跡象表明跟蹤可疑。當我有機會時,我會提交一個跟蹤。 –

相關問題