gpt4 book ai didi

spring - 硬限制连接 Spring Boot

转载 作者:行者123 更新时间:2023-11-28 22:51:12 25 4
gpt4 key购买 nike

我正在开发一个用 Spring Boot 编写的简单微服务。此服务将充当其他资源的代理,这些资源具有硬并发连接限制并且请求需要一段时间才能处理。

我想对我的微服务允许的并发连接施加硬性限制,并拒绝任何具有 503 或 tcp/ip 级别的连接。我试图研究可以为 Jetty/Tomcat/Undertow 制作的不同配置,但还没有找到完全令人信服的东西。

我发现了一些调节线程池的设置:

  • server.tomcat.max-threads=0 # 工作线程的最大数量。
  • server.undertow.io-threads= # 为 worker 创建的 I/O 线程数。
  • server.undertow.worker-threads= # 工作线程数。
  • server.jetty.acceptors= # 要使用的接受器线程数。
  • server.jetty.selectors= # 要使用的选择器线程数。

但如果理解正确,这些都是配置线程池大小,只会导致连接在某种程度上排队。

这看起来真的很有趣,但是它还没有被合并并且是针对 Spring Boot 1.5 的,https://github.com/spring-projects/spring-boot/pull/6571

我现在使用设置不走运吗?我当然可以实现一个过滤器,但宁愿在较早的级别上阻止它,而不必重新发明轮子。我想在前面使用 apache 或其他东西也是一种选择,但这仍然感觉有点矫枉过正。

最佳答案

试着看看EmbeddedServletContainerCustomizer

this gist可以给你和想法如何做到这一点。

TomcatEmbeddedServletContainerFactory factory = ...;
factory.addConnectorCustomizers(connector ->
((AbstractProtocol) connector.getProtocolHandler()).setMaxConnections(10000));

关于spring - 硬限制连接 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39124113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com