Java REST API Server 性能比较 Tomcat/Jetty/Grizzly/Undertow
JSR-356:WebSocket
JSR-311:JAX-RS
原文地址
https://menelic.com/2016/01/06/java-rest-api-benchmark-tomcat-vs-jetty-vs-grizzly-vs-undertow/
引言
Java Web Server該如何選擇,是很多開發者都需要思考的問題,尤其是隨著微服務(micro-services)的興起,嵌入式的web server越來越受到關注和重視。
那么不同的web server有什么區別呢?
jetty(Eclipse)
jetty可以作為 web server 和 servlet 容器,此外還支持HTTP/2,WebSocekt,OSGi,JMX…
grizzly(Sun/Oracle)
Grizzly是基于Java NIO的開發框架,讓開發者更好的使用Java NIP API;此外它也提供了HTTP Services,如http server,OSGi,支持 JAXWS。因此能在Grizzly http server上運行JAX-RS應用(比如Jersey)。
tomcat(Apache)
Tomcat 支持 Java Servlet,JavaServer Pages, JAX-WS以及java websocket技術。
undertow(JBoss)
Undertow是由java開發的 web server,基于 Java NIO,提供了阻塞和非阻塞兩種模式,支持HTTP,WebSocket,Servlet3.1,支持嵌入式開發。特點是輕量級,
測試
下面,將對上述四中應用作為 JAX-RS server 時的性能進行測試比較,探討哪一種web容器能夠更加快速,靈活,高效的發布 JAX-RS REST API。本文選擇 Jersey 作為 JAX-RS 實現。
(Spring boot 支持 Tomcat,Jetty,和Undertow。)
版本選擇:
1. Tomcat(8.0.30),
2. Jetty(9.2.14),
3. Grizzly(2.22.1) and
4. Undertow(1.3.10.FINAL).
測試接口只返回簡單的json文本。
public class ApiResource {public static final String RESPONSE = "{\"greeting\":\"Hello World!\"}";@GETpublic Response test() {return ok(RESPONSE).build();} }測試工具使用 ApacheBench,并發級別=1,4,16.64,128
測試系統:laptop/4C/8G jdk1.8 linux
測試結果:
1 同步等級=1
由圖可見,grizzly性能最好。
2 同步等級=128
由圖可見,Grizzly性能依然是最好的,
結論
測試結果顯示,grizzly在吞吐量和響應時間兩方面都表現最好。
本次測試,均使用了容器的默認配置,調整不同容器的配置參數可能會對測試結果產生較大影響,后續會進行進一步的測試。
源碼
GitHub
總結
以上是生活随笔為你收集整理的Java REST API Server 性能比较 Tomcat/Jetty/Grizzly/Undertow的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YII2框架中 where limit
- 下一篇: 基于c语言的bluez ble gat