簡體   English   中英

如何利用IIS應用程序池中的空閑CPU時間?

[英]How do I exploit idle CPU time in an IIS App Pool?

我有一個基於IIS 6.0的C#/ ASP.NET網站,帶有SQL服務器后端。 我想在空閑的CPU時間內生成一些計算成本高昂的報告(摘要,搜索引擎索引等)。 我需要從IIS應用程序池中生成報告,因此它知道正確的配置設置和(更難修復)避免了我被置於其中的噩夢般的安全限制。

我可以在AppPool的進程中啟動不會占用CPU的線程,因此它可以繼續提供不受約束的請求嗎? 如果是這樣,怎么樣? 什么代碼和庫?

我想它涉及ThreadPool和線程優先級,但我找不到低pri線程及其與IIS Web服務器和App池的交互的良好覆蓋。

[編輯] http://msdn.microsoft.com/en-us/magazine/cc163854.aspx#S7討論了如何使用Timer,但沒有直接聲明.NET框架將確保Timer線程低 -優先。 這可能是一個解決方案,但有保證嗎?

[編輯]這家伙談論與重要的異常相關的問題: http//flimflan.com/blog/SafelyRunningBackgroundThreadsInASPNET20.aspx

[編輯]有趣的是,Stack Overflow本身似乎使用IIS后台線程為我的目的: http//blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ ...在評論中,每個人說,他們(不再使用)技術很爛,但是這一次的意見有道理,我...

而不是輪詢應用程序池以獲得低CPU使用率,為什么不假設當系統處於最輕負載(工作時間之后等等)時使用量會很低然后您可以在該窗口期間安排報告而不用擔心關於CPU使用率使系統緊張。

您可以啟動一個線程,並在后台運行它。 這將使其優先級低於常規UI線程。

我能說得最清楚的是,沒有好的答案。 我能想到的最好的答案是在IIS中運行后台線程,並有一個單獨的輪詢請求者偶爾ping服務器以確保它是醒着的。 如果有人想出一個比這更好的答案,我會重新分配復選標記,但......

暫無
暫無

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

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