2009-06-22 55 views
3

在構建這個web服務和調用它的應用程序時,我們注意到每天第一次調用web服務的速度非常慢。它甚至會在某些日子裏超時。但是,之後的每次通話都很好。任何人都可以闡明爲什麼會這樣,以及我們如何擺脫這種痛苦?每天首次給web服務打電話很慢

在此先感謝!

+0

你知道事情正在放緩嗎?客戶是否打開了與服務的連接?該服務是否獲得了數據庫連接? – skaffman 2009-06-22 18:54:51

回答

8

如果它是一個ASP.NET Web服務,它可能是CLR初始化並首次加載和驗證程序集。你可能要考慮pre-compilation

+0

如果您緩存任何數據,您也必須等待該操作。 – rie819 2009-06-22 18:52:18

1

你可以在你的數據庫上覆制相同的行爲嗎?它可能只是數據庫需要優化第一次運行的查詢(也許參數是今天的日期?)。

0

在Global.asax類中是否有很多靜態構造函數或設置代碼?由於IIS定期回收工作進程,啓動代碼可能會再次運行。

3

同意緩存,初始化等方面的其他答案就解決方法而言,一種可能性可能是設置某種日常任務(SQL Server作業,Windows服務,其他的東西?)來模擬一個命中每天提供服務,這樣您的用戶就不會遇到這個第一個緩慢的請求。

0

優化的規則是:不要猜測。通過分析找出究竟什麼是緩慢的,然後努力做到這一點。已發佈的所有內容都提供了有關從哪裏開始尋找緩慢的極好技巧。

2

如果它是一個ASP.NET Web服務,那麼您可能需要檢查Web服務正在運行的應用程序池的設置,特別是IIS7中默認爲20分鐘的空閒超時。

Configuring IIS7 idle-timeout

即使它不是一個ASP.NET Web服務,其他Web服務器會有那麼你就需要相當的配置設置,讓您的網絡服務還活着過夜。