簡體   English   中英

IIS應用程序池中禁用工作進程回收的影響

[英]impact of disabling recycling of worker process in IIS application pool

我在IIS中托管了WCF服務,該服務需要很長時間(大約5個小時)才能執行。 WCF服務基本上使用SSRS(SQL服務器報告服務)生成一些報告,並將其保存到服務器上的某個位置。 該服務實際上在生成少量報告后就停止了,因此我在應用程序池中禁用了“回收工作進程”,“在空閑后關閉工作進程”和“限制內核請求隊列”,從而解決了該問題,所有報告無論生成它們所花費的數量如何。 但是我不確定這是否是正確的解決方法,並且我想知道取消選中IIS中WCF服務的應用程序池中的這些設置會產生什么影響? 有沒有更好的方法來解決此問題?

對於任何長時間運行的過程,最好在IIS之外進行。

在這種情況下,我將運行一個常規的Windows服務來監視請求隊列。 當請求進入生成報告時,它將剝離一個線程來執行生成。

Web服務將負責三件事。 首先,將項目添加到要處理的隊列中。 其次,檢查隊列中有關報告是否准備就緒的狀態。 第三,將完成的報告發送回主叫客戶端。

這樣一來,客戶實際上就可以開火並忘記報告請求,稍后再回撥以檢查其狀態。 此外,這意味着如果IIS由於任何原因進行了回收,那么您仍然可以。

為了獲得加分,我將添加一些錯誤處理代碼,以便在Windows服務重新啟動時可以重新啟動執行過程中的報表作業。 這會使它更健壯,並允許您隨時重新啟動服務器。

我也為我的應用程序禁用了所有來自iis的自動關閉過程,沒有任何問題。 我已經監視了內存限制,並且程序當然可以順利運行,而不會出現任何內存問題。

我認為這種自動關閉觸發器主要是為將太多網站保持在一起的過程而設計的,其中一些可能沒有很好的編程能力。 但是,如果您是iis的主人,並且已經檢查了沒有內存問題的程序,那么最好不要關閉它,或者至少以某種方式控制關閉過程。

確定最好在IIS之外進行長時間運行的進程,但是要開發它不是那么簡單,安裝起來不是那么簡單,檢出它也不是那么容易。

暫無
暫無

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

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