IIS應用程式回收導致應用中Hangfire等後臺任務無法正常啟動工作的解決方法

hrx521發表於2024-06-21

一些解釋

這個鍋的確是IIS的,我不冤枉它:

  • 1)應用程式池在回收時,將刪除正在執行的工作程序,然後再次啟動它。
  • 2)正如定義所指出的,如果您設定“AlwaysRunning”,則在IIS啟動或建立應用程式池時,立即啟動應用程式池的工作程序。
    OnDemand-> IIS將在接收到Web應用程式的第一個請求時啟動工作程序。OnDemand的缺點是在w3wp啟動時出現延遲。
    AlwaysRunning的優點是使用者在請求資源後不需要等待,AlwaysRunning的缺點是記憶體是佔用特定工作程序的方式。
    image
  • 3)Suspend只是凍結過程,比Terminal終止程序效率高得多。
    預設IIS在應用程式不活動20分鐘後將設定為“超時”。因此,如果您在20分鐘內沒有任何訪問者訪問您的站點,應用程式池將關閉-釋放這些系統資源。然後,下次當請求進入站點時,IIS將自動重新啟動應用程式池並提供所請求的頁面。
    image

解決方法

如果您希望您的仍然將始終設定在始終執行模式下,並且不睡覺,那麼下面的設定適合您:

  1. 將啟動模式設定為“AlwaysRunning”。(圖示看前面)
  2. 將閒置超時(分鐘)設定為0。(圖示看前面)
  3. 設定預載入已啟用= True (站點預置設定)
    image
  4. 禁用應用程式池回收。
    image

相關文章