2013-02-28 29 views
0

我得到頻繁的發送超時錯誤可能來自於數據庫負載過重和數據龐大。如果將回復發送給wcf請求需要3分鐘,那麼將超時設置爲3分鐘就足夠了。更長的發送超時也意味着更長的延遲?

但是,這是否也意味着端口80將忙3分鐘,並不會發送其他答覆,直到當前結束?

如果是這樣的話,我需要優化我的WCF並重建我的索引以及可能對服務器的硬件進行一些升級。

回答

0

是的,WCF線程系統具有特定數量的併發線程/進程,可以根據您的服務限制配置和實例模式進行處理。它不會阻止一個請求的端口80,所以它不會妨礙它;然而,如果你有很多併發用戶,如果他們都在運行長時間的服務操作調用並使用你所有的線程,它可能會阻塞系統。

你應該看看優化你的服務/ db。你的普通客戶使用它是爲了什麼?如果是網絡,顯然3分鐘太長等待。至少我知道如果事情花了那麼久,我就會離開!

正如那句話所說,皮膚有很多種方法來剝皮貓,並且在不知道整個系統的情況下,很難選擇一個單一的系統來使用,所以這裏有一些選項(投擲更多的硬件應該是最後的手段):

從數據庫的角度來看,如果獲取數據需要很長時間,也許應該查看可能的反規範化/預處理數據,以便於檢索。

從服務角度來看,至少有一些方法可以將控制權交還客戶端,以便在等待服務操作完成時繼續處理。

  1. 使用雙面打印完成後
  2. 使用的一種方式要求有一個ID,具有手動客戶「檢查完成」
  3. 使用MSMQ來處理,並保持對客戶的結果,檢查時有回調的客戶端調用完成
+0

謝謝。我認爲即使有空閒線程,它也會阻塞端口80。我想在處理優化時增加超時來修復失敗的答覆。 – Bahamut 2013-02-28 05:33:32