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