2015-06-08 32 views
1

第一次海報很容易在我身上。WCF - WebHttpBinding - RESTful - Performance Issue

我目前正在嘗試解決性能問題,當一分鐘閒置時間後點擊我的Web服務時。就在用戶沒有擊中網絡服務的一分鐘後,下一次呼叫在實際觸及服務操作之前需要15秒。如果你繼續隨機(不同的服務操作,所以你們不認爲這是「緩存」調用)服務操作立即調用服務返回(不到一秒)。

這裏有一些「計時」我決定採取所以你可以看到我是如何來到活動的一分鐘:

  1. 14:04
  2. 下午2點16分--15秒
  3. 下午2時21 --15秒
  4. 下午2時24分--15秒
  5. 2:25 PM --15秒

同樣,如果您在沒有一分鐘不活動的情況下連續點擊Web服務,則所有方法都會在不到一秒的時間內返回。

下面是關於我的web服務的一些細節:

  1. WCF,的WebHttpBinding,REST風格的,使用HTTPS。
  2. 基本認證+使用IDispatchMessageInspector的自定義認證。每次調用都會進行身份驗證(Initializer.aspx頁面除外)。
  3. 自定義Initialization.aspx頁面已創建,在應用程序池回收後每晚調用。該頁面緩存了所有用戶使用的一系列全局數據,並開始編譯。
  4. 應用程序池僅在每天凌晨2點進行回收。工作線程永遠不會被關閉,因爲超時被禁用。

我聽說過,但的ReliableSession的設置意味着聽起來像它只會爲PerSession,不PerCall工作。

有沒有什麼辦法可以解決這個問題,還是我堅持採用虛擬服務操作每45秒對服務器執行一次「ping」操作?

回答

0

找到了問題。我們有多個域控制器。當用戶獲得身份驗證時,它將從林級開始,然後逐漸下移到服務器駐留的實際域控制器。實施的防火牆阻止除服務器駐留的所有域控制器。

因此,基本上,它將無法與N +域控制器通信,直到它最終達到它唯一的一個。

您可以通過很多方式解決這個問題,但我們只是創建了防火牆規則,以允許Web服務器與域控制器通信需要進行身份驗證的用戶。