java - 如何限制web api中的并发请求数?
问题描述
如何通过代码限制对 Web 应用程序的并发请求数,例如 3 个请求?我是否想将每个 servlet 类放入一个线程并创建一个全局计数器(通过创建新类)?
解决方案
如何通过代码限制对 Web 应用程序的并发请求数,例如 3 个请求?我是否想将每个 servlet 类放入一个线程并创建一个全局计数器(通过创建新类)?
您通常依靠 Web 容器来限制并发请求的数量;例如,通过在 Web 容器配置中设置工作线程或连接数的限制……。
显然,如果 Tomcat 服务器收到的请求超出其处理能力,它将发送通用 503 响应。了解更多信息:
- https://tomcat.apache.org/tomcat-8.5-doc/config/http.html - 解释在哪里/如何设置配置
- Tomcat 响应 HTTP 503 - 举例说明会发生什么......
但是我如何向用户显示婚礼已达到其限制(如 3 个请求)?
如果您想限制特定的请求类型并向用户显示特定的响应,那么您可能需要使用计数器等在每个 servlet 中实现这一点。
但是当服务器超载时尝试做“好”的事情的问题是,做好的事情往往会增加负载。这一点尤为重要:
- 当您的服务器严重不足以承受(真实)用户的实际负载时,或者
- 当有人无意或故意对您进行 DoS 攻击时。
推荐阅读
- javascript - Discord.js 的角色反应
- python-3.x - Python如何创建一个按钮矩阵并将其放在我的一个框架内
- python - sqlalchemy 中自我引用的一对多父子模型上的 hybrid_property "is_parent"
- scala - 过滤导致 Spark 中数据类型解析问题的行
- authentication - 收到登录消息时,QuickFix 启动器应用程序注销
- x86 - 英特尔架构中的锁语义
- java - mvn jetty:运行失败原因:java.lang.RuntimeException:错误扫描条目META-INF/versions/9/javax/xml/bind/ModuleUtil.class
- linux - 如何重置keytab kerberos?
- python - 如何使用 int8 为 Resnet50v1.5 运行 NVIDIA DeepLearningExamples
- r - 收集具有多个标题行的数据集