为什么要限制IIS中允许的请求?

时间:2018-02-16 19:39:39

标签: asp.net iis webforms httprequest windows-server-2008

在IIS中,我可以选择更改定期重启设置,以控制应用程序池何时回收。大多数属性对我有意义(内存,私有内存,时间),除了一个:“请求”。 Microsoft文档 说明“请求”属性:

“指定在处理特定数量的请求后应该回收工作进程。默认值为0,这将禁用该属性。”

我的问题是:由于默认值允许无限制的请求(这对我来说很有意义),那么为什么生产应用程序限制这些请求会有利呢?应用程序池回收将丢失应用程序的会话数据,这似乎有点愚蠢,因为许多请求已经过去了。限制服务器请求的数量可以防止DDOS攻击或我忽略的其他一些问题吗?为什么有人想让应用程序池回收只是因为正在使用应用程序?

文档: https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/recycling/periodicrestart/index

1 个答案:

答案 0 :(得分:0)

请记住,在 IIS 中回收 w3wp.exe 处理的一些原因通常是为了避免由于内存泄漏、数据库连接泄漏、wcf 句柄泄漏、iis 请求挂起或其他一些未释放的未处理资源导致的不稳定状态因为糟糕的编程或糟糕的代码。因此,您不希望这些资源泄漏随着时间的推移而累积。

“请求限制”“固定时间间隔” 的替代方案,因为在某些情况下,您知道您的代码在每个请求数量上泄漏资源的频率大约是多少.例如,在生产中,我可能有一个特定的流量模式,例如每小时 1,000,000 个请求,之后我知道有 1Gig 的内存泄漏。因此,如果您了解有关您自己的应用程序的非常具体的信息,“请求限制” 只是一种替代方法。而“时间间隔”设置可能会在该时间间隔内累积 1,000,000 个请求或 10,000,000 个请求,从而导致可能导致 w3wp.exe 进程崩溃的极其严重的资源泄漏。因此,根据您所知道的信息,您会选择使用静态数字“请求限制”,而不是定时间隔。

enter image description here