2013-02-28 25 views
0

全部,IIS Garbage在閒置時收集託管的服務應用程序嗎?

我開發了一個WCF ODATA服務應用程序,並將其託管在IIS7中。如果客戶端空閒大約15分鐘左右,則服務應用程序具有內存緩存,該緩存會丟失其所有緩存值。

在排除故障時,我發現應用程序邏輯是正確的,並且不會從緩存中大量刪除對象。

所以,我很疑惑,如果IIS在沒有客戶端連接它的情況下清除服務對象很長時間。

GC的行爲是否正確?如果是這樣,我該如何控制它?

任何幫助,非常感謝。

感謝

回答

0

默認情況下,IIS 7應用程序池有設置一個20分鐘的空閒超時值之後,應用程序池從內存與您的所有緩存數據一起卸載。

您可以increase the Idle Timeout甚至將其設置爲'0',這會導致它永不超時,方法是在IIS管理器中選擇託管站點的應用程序池,然後在「操作」窗格中選擇「高級屬性」,然後設置「空閒超時(分鐘)值'添加到您想要的新超時並單擊確定。 (在Brad Kinsley的博客文章中有幾個關於這個的屏幕截圖'IIS7 Application Pool Idle Time-out Settings'

要考慮的一個選項是設置一個超級緩存,以便即使IIS回收您的應用程序,內存緩存仍然存在或設置備份存儲您現有的緩存,這樣,如果應用程序池從後備存儲回收緩存重新填充。

企業庫的緩存應用程序塊是這樣的後備存儲緩存解決方案的一個例子。參見'Caching Application Block and database backing store'爲更多關於這方面的信息。

相關問題