通过应用程序池隔离进程

时间:2014-11-12 15:07:45

标签: iis-7 application-pool

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

理想情况是,如果一个应用程序池变热,每个进程(或应用程序池)将有权访问相同的CPU份额;使他们能够及时继续提供服务。

理论上,应用程序池有助于隔离占用过多资源(CPU或内存)的站点,使其不会影响不同应用程序池下的其他站点。

许多网站都说明了这一点,这里有一段表明这是真的。

  

摘录:   http://www.windowsnetworking.com/articles-tutorials/netgeneral/Working-Application-Pools-Internet-Information-Server.html

     

结论

     

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

实际上,这并不像建议的那样发生。我曾与微软专家交谈,他们也说如果CPU被一个进程耗尽,其他App Pools将无法获得共享 - 即它优先考虑消耗CPU的进程;但我不能完全相信没有解决方案或保护措施。

我收到的建议是在应用程序池设置中启动“CPU限制”选项。这使您可以在超过特定时间间隔的限制时终止该进程。很棒,但其他网站仍然会在5/10分钟内遇到降级服务,直到检测到并开始使用。

我的另一个问题是高CPU负载可能是由合法任务引起的;我不希望在中间流程中重置进程,我确实希望启用其他应用程序池来分享CPU时间。在完成这些任务时将进程优先级降低到“低于正常”,可以使其他站点响应;但是,如果具有更高优先级的另一个应用程序池开始变热,则此过程将受到限制或没有共享CPU。

有没有办法设置IIS7,以便在可用的CPU资源有限时,App Pool可以拥有CPU的份额? IIS8会改进吗?是否有任何其他解决方案可以保持性能/同样为w3wp流程提供资源?

P.S。我正在寻找一种方法来改善这些事件发生时的服务器性能;我实际上并没有每5分钟在我的服务器上运行大量的热进程,但需要防止意外偶然发生。

1 个答案:

答案 0 :(得分:0)

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

http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-cpu-throttling-sand-boxing-sites-and-applications