簡體   English   中英

ASP.NET - 回收應用程序池指示更大的問題?

[英]ASP.NET - Recycling App Pools indicative of Larger problem?

是否必須在ASP.NET中回收一個App-Pool,表明Web-App中存在更大的問題? 或者這只是ASP.NET和IIS的'事物的方式'?

編輯:由於其中一個錯誤是“OutOfMemory”異常,您對行動方案的建議是什么? 你會添加內存嗎? 介紹應用程序? (重要的是要注意我對此有自己的想法,並且有一條路徑排成一列,但是想聽聽你的答案)。

就個人而言,我認為這是一個更大問題的跡象。 我有幾周沒有回收的應用程序。 他們回收的唯一原因是我們推動代碼更新。 我認為您應該查看您的事件日志,看看您是否可以找到應用程序池回收的任何原因。 我已經看到它經常發生內存泄漏,最終會導致內存不足,迫使你的應用程序池重新啟動。

IIS的運行狀況監視功能可以自動回收應用程序池。 因此,僅僅回收自己的應用程序池並不一定表示存在問題; 它可能只是啟用了IIS的預防功能。 我們的想法是,如果您的應用程序有內存泄漏或忘記解除分配,我們可以通過每隔一段時間重新啟動它來提高應用程序的整體可用性,就像您在桌面上運行一個月后重新啟動Windows一樣。許多應用程序的小壞行為的凈效應開始造成損失。

在其他一些平台中,您可能不會快速地注意到這些問題,尤其是在CGI環境中,因為整個框架已經設置好,然后隨着每個頁面請求被拆除。

理想情況下,您永遠不必重新啟動應用程序池,並且必須這樣做通常是某種問題的跡象。 回收功能是針對我們自己的錯誤的一種責任保險,或那些“行星剛剛對齊”的錯誤,這些錯誤非常難以追蹤,重新創建,並且很少發生,以至於它們可能不值得進行故障排除。

應用程序池可以回收的原因很多。 未處理的異常或線程掛起是常見原因。 如果您沒有關閉所有SqlConnections並且連接池為空,則會導致它也回收。 死鎖超時是另一個,如果你有一個死鎖,它將掛起工作進程,這將導致回收。 此外,如果IIS在服務器上使用異常數量的資源,它將回收(我認為默認值為60%)

還有很多iis設置會觸發它。 有定期回收的設置(為了清除會話狀態),我認為默認情況下每24小時一次。 我們有大約40個中等到重型公共物業,我們設定在低時期回收。

我很確定還有其他原因。 失去會話的人可能比應用程序崩潰或服務器掛起更好,這就是內置於IIS的原因。 不幸的是,它可能使診斷問題變得非常困難。 我會在回收發生的時候看看你的事件查看器,看看有沒有什么有趣的地方可以開始。 跟蹤內存使用情況將是我的下一步,然后是一些詳細的日志記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM