我最近使用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