我最近使用vert.x测试了一个简单的HTTP服务器(基于java)我很惊讶http服务器的吞吐量和api延迟,它非常快。为什么反应式编程应用程序(vert.x)比单线程锁定free,无阻塞Java应用程序更快?
http服务器的同一段代码在java应用程序上运行,具有单线程,无锁和非阻塞。性能不及vert.x one的三分之一。
我不明白的是,vert.x优于非反应式Java应用程序的核心技术差异是什么?
STATS:
测试使用Jmeter完成。 jmeter和应用程序都运行在相同的机器上,jmeter消耗CPU 25-50%,应用程序消耗CPU 20-30%。 所有测试运行5分钟。
- 弹簧引导用1个Tomcat的工作线程:
的JMeter与50客户线程同时轰击请求(全部:每秒4285):
- Vert.x(基于java)只有1个垂直(HTTP处理器垂直) - 这意味着只有1个处理器线程
的JMeter用1个客户线程轰击请求(遍及:9382每秒):
的JMeter与50个客户线程轰击请求并发(全程:每秒20785):
剖析这两个应用程序并查看线程转储。这将得到一个线索。您需要提供号码才能获得反馈。 – randominstanceOfLivingThing