我正在使用部署在 AWS Beanstalk 上的 Spring Boot 开发 Rest API。该服务可能每天都会受到成千上万客户的欢迎。因此,我想了解 Spring Boot 处理多个请求的能力。
从我在 Spring-Boot 中读到的内容:同时处理多个请求 和 如何在 spring boot 中拥有线程安全控制器,似乎 Spring Boot 可以同时处理请求,而控制器是线程安全的。
但是,如果同时向同一个端点发出两个更新请求,控制器是一个接一个地处理请求,还是同时与两个线程并行处理?如果是后者,每个线程是否都有自己的实体管理器?有没有办法实现一个线程池来根据EC2实例的容量来限制线程的数量?顺便说一句,我如何根据估计的请求量来决定我应该从多大的实例开始?
原文由 ddd 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,Spring boot 可以同时处理请求!如果您的 servlet 容器在底层是 tomcat,它可以同时处理 200 个请求。
下面的代码片段强调了这一点,但请参考 原始的 spring boot 源
但是,您可以通过将
server.tomcat.threads.max
添加到您的application.properties
或application.yml
来覆盖此值。Spring 将管理连接池并处理实体管理器的分配(根据您在属性中指定的最小和最大连接数)。我相信您可以在这里阅读更多相关信息: 何时使用 Spring JPA (Hibernate) Entity Manager 将连接返回到连接池?