Spring Boot 应用程序可以同时处理多个请求吗?

新手上路,请多包涵

我正在使用部署在 AWS Beanstalk 上的 Spring Boot 开发 Rest API。该服务可能每天都会受到成千上万客户的欢迎。因此,我想了解 Spring Boot 处理多个请求的能力。

从我在 Spring-Boot 中读到的内容:同时处理多个请求如何在 spring boot 中拥有线程安全控制器,似乎 Spring Boot 可以同时处理请求,而控制器是线程安全的。

但是,如果同时向同一个端点发出两个更新请求,控制器是一个接一个地处理请求,还是同时与两个线程并行处理?如果是后者,每个线程是否都有自己的实体管理器?有没有办法实现一个线程池来根据EC2实例的容量来限制线程的数量?顺便说一句,我如何根据估计的请求量来决定我应该从多大的实例开始?

原文由 ddd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
1 个回答

是的,Spring boot 可以同时处理请求!如果您的 servlet 容器在底层是 tomcat,它可以同时处理 200 个请求。

下面的代码片段强调了这一点,但请参考 原始的 spring boot 源

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
public class ServerProperties {
  public static class Tomcat {
     public static class Threads {
       private int max = 200; // Maximum amount of worker threads
     }
  }
}

但是,您可以通过将 server.tomcat.threads.max 添加到您的 application.propertiesapplication.yml 来覆盖此值。

Spring 将管理连接池并处理实体管理器的分配(根据您在属性中指定的最小和最大连接数)。我相信您可以在这里阅读更多相关信息: 何时使用 Spring JPA (Hibernate) Entity Manager 将连接返回到连接池?

原文由 Felipe Mariano 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进