繁体   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