我有一個WCF服務託管在IIS中,需要很長時間(大約5小時)才能執行。 WCF服務基本上使用SSRS(SQL服務器報告服務)生成一些報告並將它們保存到服務器上的某個位置。這個服務實際上是在生成少量報告後停止的,所以我禁用了「工作進程的回收」,「空閒後關閉工作進程」和「限制內核請求隊列」,並修復了問題,所有報告都是無論生成它們的數量如何都會生成。但我不確定這是否是正確的解決方法,我想知道在IIS中的WCF服務的應用程序池中取消選中這些設置的影響是什麼?有沒有更好的方法來解決這個問題?禁用IIS應用程序池中工作進程的回收的影響
1
A
回答
5
對於任何長時間運行的進程,最好在IIS之外進行。
在這種情況下,我會有一個正在運行的監視請求隊列的Windows服務。當一個請求生成報告時,它會分離一個線程來執行生成。
Web服務將負責3件事。首先,將一個項目添加到要處理的隊列中。其次,檢查隊列中關於報告是否準備就緒的狀態。第三,將完成的報告發送回呼叫客戶端。
這樣可以讓客戶基本上做了一場火災,忘記了報告請求,稍後再回來檢查其狀態。此外,這意味着如果IIS因任何原因而回收,您仍然可以。
對於獎勵積分,我會添加一些錯誤處理代碼,當Windows服務重新啓動時,它可以重新啓動正在執行中的報告作業。這會使它更健壯一些,並允許您隨時重新啓動服務器。
0
我已經禁用了iis中的所有自動關閉進程,以免出現任何問題。我已經監視了內存限制,當然這個程序也能順利地處理內存中的任何問題。
我認爲這個自動關閉觸發器主要是爲了將過多的網站集中在一起的過程而設計的,並且可能其中一些沒有很好的編程。但是,如果你是你的iis的主人,並且你已經檢查你的程序沒有內存問題,那麼最好不要關閉它,或者至少用某種方式控制關閉過程。
好吧,最好在IIS之外進行長時間運行的進程,但開發起來並不那麼簡單,安裝起來不是那麼簡單,檢查出來也不那麼簡單。
相關問題
- 1. IIS應用程序池回收
- 2. 回收應用程序池作爲應用程序池標識
- 3. 如何防止IIS在工作進程無響應時回收應用程序池
- 4. 回收應用程序池
- 5. IIS應用程序池回收和本地程序集
- 6. 應用程序池回收和工作流程
- 7. 應用程序池,工作進程和Web應用程序?
- 8. 應用程序池vs應用程序域vs工作進程
- 9. C#回收IIS 6的應用程序池錯誤
- 10. IIS應用程序池回收時的ServiceStack SSE連接
- 11. 在IIS應用程序池回收期間調試應用程序行爲
- 12. 使用PowerShell回收IIS應用程序池:「異常調用回收」
- 13. IIS應用程序池
- 14. IIS應用程序池PID
- 15. IIS應用程序池
- 16. 回收工作進程對WCF服務的影響
- 17. IIS何時回收工作進程?
- 18. 使用大量內存的IIS應用程序池進程
- 19. 使用Selfhosting ASP.NET應用程序回收應用程序池
- 20. Quartz.net定期回收IIS應用程序池
- 21. IIS 7 IP限制沒有應用程序池回收?
- 22. IIS 7.0應用程序池回收日誌文件
- 23. IIS應用程序池回收+石英調度
- 24. IIS 7.5在預定時間回收應用程序池
- 25. 停止IIS 7.5應用程序池回收
- 26. 什麼能導致IIS應用程序池回收?
- 27. IIS應用程序池和.NET垃圾回收
- 28. IIS應用程序池 - 停止/啓動與回收
- 29. 回收IIS應用程序池:無法連接到SharePoint網站
- 30. Signalr墜崖永遠IIS應用程序池回收
感謝您的回覆,其他回覆也很有用。 – RKP 2011-01-04 15:13:50