我正在尝试在客户的web服务器上实现一些失败的安全机制,该服务器运行着他们最重要的两个站点(IIS7上的ASP.NET)。我将设置应用程序池限制,以便如果任何w3wp进程使用90%+ CPU超过一分钟,它将被终止(对任何访问者产生临时的503服务不可用消息),并且基于我的本地测试将在一分钟内重新启动-这比让一个占用CPU的进程在任何时间长度内使整个服务器停机要好得多。
这似乎是有效的,但是在我摆弄本地IIS7实例的过程中,我注意到如果一个请求调用我的"Kill.aspx",即使站点重新启动,IIS也不会为导致它挂起的会话提供服务。我只能从不同的会话重新启动测试站点-但一旦我清除了“杀手级”浏览器上的cookies,我就可以再次访问该站点。
在大多数情况下,如果排泄物击中风扇,这将是编码/配置错误,而不是用户当时碰巧请求页面的错误。
因此,我想关闭这个功能,因为理论上的用户不知道他们需要清除他们的cookies才能再次访问网站。我真的很感激任何关于这是如何可能的想法。
发布于 2010-12-31 00:43:54
您应该使用ASP.Net会话StateServer,而不是进程内(有关详细信息,请参阅msdn )。这样,您会话将在不同的进程中运行,不会受到IIS崩溃的影响。
发布于 2010-12-31 00:55:12
关闭什么“功能”?如果工作进程被重置(并且您使用的是in-proc会话),那么会话在重置时就会消失。
您可能希望研究将会话存储移动到状态服务器或其他进程外场景。
此外,您可能希望将应用程序池设置为使用多个工作进程(也称为:网络花园),这样,如果一个进程被终止,其他进程将继续提供内容。
接下来,作为另一种选择,您可能希望设置多个web服务器并对它们进行负载均衡。
最后,您可能想要分析应用程序,以确切地了解它们是如何导致它变得虚无的。我的猜测是,您只是用这个想法掩盖了许多代码问题。
https://stackoverflow.com/questions/4564222
复制相似问题