我们目前正面临Spring webFlux的性能问题。为了确定反应式编程的好处,我们实现了Spring Boot服务,该服务从MongoDB中获取数据,并通过REST API将其返回给使用者。
该服务有两种变体:
在这两种实现中,REST控制器都直接从存储库中获取数据,并将其作为List resp返回。作为助焊剂。不再执行任何应用程序逻辑。
我们对100个调用该服务的用户进行了小规模的负载/性能测试,我们发现非反应式实施的性能远好于反应式实施。
事实上,不仅非反应式实现具有更好的HTTP吞吐量,而且也许更有趣的是,与反应式实现相比,它消耗更少的CPU和更少的线程!这与预期特别相反,因为我们预计反应式版本会以少量线程扩展,如https://spring.io/blog/2016/07/28/reactive-programming-with-spring-5-0中所述-m1
我们需要在设置中进行一些调整吗?
有人遇到过类似的问题吗?