Iis 7 通过应用程序池隔离进程

Iis 7 通过应用程序池隔离进程,iis-7,application-pool,Iis 7,Application Pool,如果我有一个站点(无意中)消耗了大量CPU,但所消耗的内存在正常参数范围内,则会对单独应用程序池中所有其他站点的性能产生不利影响。这些其他站点正在努力争取一小部分CPU时间,导致通常需要毫秒才能完成的请求,最终需要>10秒 理想的情况是,如果一个应用程序池变热,每个进程(或应用程序池)都可以访问同等份额的CPU;使他们能够继续及时地为请求提供服务 理论上,应用程序池有助于将消耗过多资源(CPU或内存)的站点与影响不同应用程序池下其他站点的站点隔离开来 许多网站都有这样的说法,下面是其中一个网站的

如果我有一个站点(无意中)消耗了大量CPU,但所消耗的内存在正常参数范围内,则会对单独应用程序池中所有其他站点的性能产生不利影响。这些其他站点正在努力争取一小部分CPU时间,导致通常需要毫秒才能完成的请求,最终需要>10秒

理想的情况是,如果一个应用程序池变热,每个进程(或应用程序池)都可以访问同等份额的CPU;使他们能够继续及时地为请求提供服务

理论上,应用程序池有助于将消耗过多资源(CPU或内存)的站点与影响不同应用程序池下其他站点的站点隔离开来

许多网站都有这样的说法,下面是其中一个网站的摘录,表明这是真的

摘录:

结论

“在这篇文章(链接)中,我解释了一个网站的问题 网站可以影响服务器托管的其他网站。但是,您可以 通过将每个托管网站放在自己的网站中来防止这些问题 应用程序池。“

事实上,这并不像人们所说的那样发生。我和微软的专家谈过,他们还说,如果某个进程耗尽了CPU,那么其他应用程序池将无法共享—即它会优先处理消耗CPU的进程;但我不能完全相信没有解决方案或保护措施来对抗这种情况

我收到的建议是在应用程序池设置中启动“CPU限制”选项。这使您能够在进程超过某个时间间隔的限制时终止进程。很好,但是其他站点仍然会经历5/10分钟的服务降级,直到检测到并启动

我的另一个问题是,高CPU负载可能是由合法任务引起的;我不希望在中间流程中重置进程,我希望启用其他应用程序池以获得CPU时间的一部分。当这些任务完成时,将流程优先级降低到“低于正常值”,使其他站点能够响应;但是,如果另一个具有更高优先级的应用程序池开始热运行,则此进程将获得有限的CPU资源,或者没有CPU资源

有没有办法设置IIS7,以便在可用CPU资源有限时,应用程序池可以共享CPU?IIS8对此有改进吗?是否有其他解决方案来保持性能/向w3wp流程平均分配资源

另外,我正在寻找一种在发生此类事件时提高服务器性能的方法;实际上,我的服务器上并没有每5分钟运行大量的热进程,但需要防止意外的偶然事件。

你问:“IIS8在这方面有改进吗?”是的,是的。使用IIS8,您可以为任何应用程序池指定CPU使用限制。看看: