【问题标题】:How to limit the number of concurrent requests in web api?如何限制web api中的并发请求数?
【发布时间】:2019-08-31 22:17:12
【问题描述】:

如何通过代码限制对 Web 应用程序的并发请求数,例如 3 个请求?我是否想将每个 servlet 类放入一个线程并创建一个全局计数器(通过创建新类)?

【问题讨论】:

  • 不,您将 webapp 服务器配置为只有那么多请求处理线程。例如。在 Tomcat 中,您设置 maxThreads
  • 这实际上取决于您使用的 Servlet 容器和/或应用程序服务器。设置会有所不同。例如,Tomcat 有两种工作模式:BIO 和 NIO,你可以根据模式配置你想要的,通过设置maxConnectionsmaxThreads
  • @Andreas 但是我如何向用户显示婚礼已达到其限制(如 3 个请求)?
  • @ɐuıɥɔɐɯ 哪里可以设置maxConnections或者maxThreads???
  • 你没有。它进入server.xml

标签: java web-applications


【解决方案1】:

如何通过代码限制对 Web 应用程序的并发请求数,例如 3 个请求?我是否想将每个 servlet 类放入一个线程并创建一个全局计数器(通过创建新类)?

您通常依靠 Web 容器来限制并发请求的数量;例如通过在 Web 容器配置中设置工作线程或连接数的限制。

显然,如果 Tomcat 服务器收到的请求超出其处理能力,它将发送通用 503 响应。欲了解更多信息:

但是我如何向用户显示婚礼已达到其限制(如 3 个请求)?

如果您想限制特定的请求类型并向用户显示特定的响应,那么您可能需要使用计数器等在每个 servlet 中实现这一点。

但是当服务器超载时尝试做“好”的事情的问题是,做好的事情往往会增加负载。这一点尤为重要:

  • 当您的服务器严重不足以承受(真实)用户的实际负载时,或
  • 当有人无意或故意对您进行 DoS 攻击时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多