Java REST API Server 性能比较 Tomcat/Jetty/Grizzly/Undertow
JSR-356:WebSocketJSR-311:JAX-RS引言Java Web Server该如何选择,是很多开发者都需要思考的问题,尤其是随着微服务(micro-services)的兴起,嵌入式的web server越来越受到关注和重视。那么不同的web server有什么区别呢?jetty(Eclipse)jetty可以作为 web server 和 servlet 容器,此外还支
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!\"}";
@GET
public 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在吞吐量和响应时间两方面都表现最好。
本次测试,均使用了容器的默认配置,调整不同容器的配置参数可能会对测试结果产生较大影响,后续会进行进一步的测试。
源码
更多推荐
所有评论(0)