Spring boot 如何确保我的反应式应用程序以事件循环方式运行

Spring boot 如何确保我的反应式应用程序以事件循环方式运行,spring-boot,spring-webflux,project-reactor,Spring Boot,Spring Webflux,Project Reactor,我使用的是spring boot 2.0.4.0版本。我的疑问是我的应用程序是否以事件循环方式运行。我使用tomcat作为我的服务器 我正在我的应用程序中运行一些性能测试,经过一段时间后,我看到一个奇怪的行为。在请求达到500请求/秒后,我的应用程序不能提供超过500请求/秒的服务。通过普罗米修斯,我可以计算出tomcat的最大线程默认为200。看起来所有的线程都被消耗了,这就是为什么它不能每秒处理500个以上的请求。如果我错了,请纠正我 tomcat服务器能否以事件循环方式运行? 如果可能,如

我使用的是spring boot 2.0.4.0版本。我的疑问是我的应用程序是否以事件循环方式运行。我使用tomcat作为我的服务器

我正在我的应用程序中运行一些性能测试,经过一段时间后,我看到一个奇怪的行为。在请求达到500请求/秒后,我的应用程序不能提供超过500请求/秒的服务。通过普罗米修斯,我可以计算出tomcat的最大线程默认为200。看起来所有的线程都被消耗了,这就是为什么它不能每秒处理500个以上的请求。如果我错了,请纠正我

tomcat服务器能否以事件循环方式运行? 如果可能,如何更改tomcat服务器的事件循环大小


试着把它改成jetty还是一样的问题。想知道我的应用程序是否以事件循环方式运行。

嘿,我认为您在项目中做错了什么,可能您的一个依赖项不支持反应式编程。如果您想从异步编程(反应式)中获益,您的代码必须是100反应式的,即使是为了安全,您也必须使用反应式spring安全性。
通常,反应式spring应用程序将在netty上运行,而不是在tomcat中运行,因此请检查您的依赖关系,因为tomcat不是反应式的

这更像是一种分析。在本地机器上运行了一些性能测试之后,我能够弄清楚我的应用程序中实际发生了什么

我所做的是,在本地机器上运行性能测试,并通过JConsole分析应用程序

正如我所说,我将所有阻塞dB调用都安排到schedulers.elastic。我所意识到的是,这是造成瓶颈的原因。因为我的dB连接是有限的,我使用hikari进行连接池,所以我从弹性池中创建的线程数量无关紧要。 由于反应式编程更多的是使用较少的线程来最大限度地消耗资源,因为线程是以无限制的方式创建的,所以它与普通应用程序没有什么不同

因此,作为解决方案的一部分,我所做的是将数据库调用应该使用的线程数量限制在100个。爆炸数量从500吨/秒上升到2300吨/秒


我知道这不是人们应该期望的反应式应用程序的数量,它有更多的功能。因为现在我别无选择,只能忍受非反应性驱动程序。等待mssql服务器的反应性驱动程序的生产级可用性。

我对此非常陌生,无法回答您的问题,但希望此链接可以帮助您完全消除对web的依赖性。仍然没有改善。因为我使用的是RDBMS,它的驱动程序不是被动的,所以我已经在schedular.elastic()上安排了这些调用。可能是调度。弹性限制了吞吐量。