【问题标题】:Why limit the requests allowed in IIS?为什么限制 IIS 中允许的请求?
【发布时间】:2018-07-27 18:35:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • Stack Overflow 不是教育网站,而是具体问题。服务器将无法根据其硬件和软件处理无限的请求,因此您应该始终设置合理的限制,然后规划容量。太宽泛的问题,你应该参考具体的书籍或教程。
  • @LexLi 如果您更仔细地阅读我的问题(或者对 IIS 有更好的理解),硬件应该无关紧要,因为 iis 不是指请求/时间,而是在回收事件之前的请求总数发生。至于教程,这不是其中的内容,因为它太具体了。如果您需要参考资料,我可以向您展示许多流行的问题,这些问题涉及广泛的问题,例如“为什么要使用接口而不是父类”;这对我来说听起来很有教育意义。堆栈溢出是关于教育,而不是简单地为人们做编程作业
  • 让我简单地否决这个问题,以反映您没有说得足够清楚。应用程序池至少有两个请求编号设置,docs.microsoft.com/en-us/iis/configuration/… 中的 queueLengthdocs.microsoft.com/en-us/iis/configuration/… 中的 requests。您应该尝试修改问题以说明您指的是哪个设置。
  • @LexLi 好吧,假设您因为我的问题实际上很糟糕而投反对票,那么我对此没有任何问题。但是,假设您实际上是在尝试提供帮助:问我问题的更好方法是什么?我不完全确定是什么让我的问题过于模糊,以及为什么我不能问一个可以教育我的问题。我根据您的建议重写了我的问题;建设性的批评表示赞赏。
  • 检查了您的更新。看起来更好,但对于答案来说仍然太宽泛。将其拆分为较小的线程后,您应该会发现大量现有线程,例如 stackoverflow.com/questions/7171367/…stackoverflow.com/questions/133236/asp-net-session/… 您所说的设计“似乎有点傻”,您只是对相关主题的阅读太少了。跨度>

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 2020-04-05
    • 2019-07-19
    • 2020-06-23
    • 2020-03-15
    • 2021-03-21
    相关资源
    最近更新 更多