2013-04-02 36 views
1

following article所述,某些.NET應用程序池在首次請求時變得非常慢(約x4次)。問題只涉及應用程序池。其中一些緩慢,一些不在相同的條件:網絡應用程序,配置,文件權限等。某些應用程序池在初次加載時速度很慢

所以我的問題是,這是怎麼發生的?一個應用程序池如何使用相同的設置變得比其他應用程序池慢,甚至在重新啓動這兩個應用程序池之後又有辦法修復/防止它?一旦應用程序池變慢,即使停止並啓動應用程序池也不會再次變快。

我確保在每次測試之前回收應用程序池,以便所有測試都是「第一次請求」。

我發現同樣的問題,並想知道如果有人在這裏找到這個奇怪的問題的解決方案?

請注意,這不是asp.net初始化速度的一般問題。我們將同一臺服務器上的相同代碼與兩個應用程序池進行比較:通用(快速)和中斷(慢)。切換兩個相同(相同)瑣碎(沒有任何數據庫訪問等)之間的兩個應用程序池(相同的設置,但一個不合理的「慢」)測試asp.net應用程序改變他們的行爲:一個開始非常緩慢,另一個 - 不。

的問題是:

  • 爲什麼應用程序池突然變得壞了(慢)?
  • 如何避免應用程序池變得「慢」?
  • 如何修復損壞的應用程序池?是的,我們可以創建 無限的新應用程序池,但無論如何,這是奇怪的和不可接受的 生產環境。

UPD:我已經注意到這個問題甚至不是「慢」的應用程序池本身,而是它的名字!如果您重命名「緩慢」的應用程序池,它將再次變得「快速」。如果您創建的新應用程序池名稱爲之前重命名(或刪除)的「緩慢」的應用程序池,則此應用程序池會再次變慢!

+0

我在使用應用程序標識的.NET 4集成應用程序池上也經歷過相同的情況。您對應用程序池使用的是什麼類型的身份緩慢? –

回答

0

默認情況下,應用程序池設置爲在一段時間後回收。我認爲默認是20分鐘。回收後,必須在第一次請求時重新加載。這可能是你正在經歷的。

1

大聲笑。這有點像當你開始拉割草機時。要執行初始請求並初始化數據庫,需要一些時間。我們每次在我們的SharePoint服務器上執行IIS重置時都會注意到這一點。它必須採取web.config,連接到數據上下文或數據庫,在網站開始啓動請求之前做大量的事情。一旦運行並擁有所有組件和運行時間,雖然它很流暢。通常做好保養需要在夜間或休息時間進行iisreset,所以當用戶第一次上手時,速度會更快。你想要的最後一件事就是你的首席執行官或副總裁,成爲第一個訪問你的網站的人。

同樣在旁註中,應用程序池越多,所擁有的內存就越多。我知道SharePoint應用程序池,每個池需要250MB的內存。緩解使用率和資源消耗的最佳方法是將其劃分爲多個Web服務器場/羣集,這些服務器場/羣集可爲請求執行某種循環冗餘或負載平衡。在給定點擊中的用戶越多,最初的請求就會越慢。

+0

我遺漏的另一件事是NTFS安全。根據您是使用集成的Windows安全性還是本地密碼或KERBEROS /證書,還是使用加密的SSL,還會增加初始加載時間和開銷。幾乎忘記安全/認證! – ApolloSoftware

+0

這一切都是通用的,並不涉及具體問題。無論如何感謝您的回答。同意,最好將應用程序合併到一個池中,這樣可以節省內存。但另一方面會降低穩定性:如果您的遊戲池崩潰,則所有合併的應用程序都會向您的首席執行官或副總裁顯示「服務不可用」。 ) –

2

我有一個類似的問題,我有一個應用程序池生成WCF錯誤,說它處於故障狀態。我試着創建一個新的應用程序池並測試相同的代碼,它工作正常。然後,我刪除了舊的應用程序池,並將新的應用程序池重命名爲舊的,並返回問題!所以看起來有些東西被保存在與應用程序池相關的地方,當應用程序池被刪除時它們不會被刪除。非常奇怪。通過將它重命名爲其他任何東西,它可以再次運行。但是如果我將它改回原來的名字,它會拋出錯誤!我只希望我們不必更改應用程序池名稱。

+0

仍然有這個問題。你有沒有設法找到一個解決方案,我想知道? –