替代JBoos AS的应用服务器,WildFly 8 压力测试

jopen 10年前

最终版的WildFly8于 本周发布了。WildFly是最新版的遵从Java EE7的来自于红帽子公司的应用服务器。它是JBoss 应用服务器7的继承者。WildFly最主要的特性之一就是新的高性能的称之为Undertow的网络服务器,它将取代之前的JBoss的Tomcat服 务器。鉴于我们最近正在做一个新应用的基准测试,我很好奇WildFly8的表现会怎么样呢。为了发现结果,我决定在基准验证时使用这个应用并把它的结果 与最新的 6.2 JBoss EAP进行对比。

用于基准验证的应用是一个简单的基于JSF的应用。每次请求JSF模版,都会从一个支持bean抓取数据,并实时的给予补偿。这些支持bean从一 个本地的缓存检索数据,这个缓存有一个RESTful 接口,并且周期性的刷新。刷新是异步发生的,因此不会阻塞任何使用者的请求。为了获得一个更好的性能,HTTP的会话明确禁止这类应用。

JSF无状态的模式也将被激活。虽然被补偿的JSF页不需要任何形式的表单,(因此也不需要任何开始状态)。事实上这看起来会促进性能一个小小的提升。然而性能的提升是如此的微小以致它消失在运行时的波动中,因此很难说它真的起了什么作用。

JMeter是用于它自身的基准。应用和JMeter都运行在同一台电脑上,它的配置是3.4GHz 四核的Intel至强处理器,16GB的内存或者RAM,运行着Linux Mint 16操作系统。随着JDK8的首个发行本在上周发布,我决定在基准验证中使用JDK7u45和JDK8b126. 外部使用JBoss EAP 6.2和WildFly 8,对于standalone.xml 和其它的内部配置文件不做任何修改。

压力测试通过100个并发线程一起执行,每个线程执行2000个请求。对于应用服务器软件和JDK的每个版本组合,彼此直接进行四次测试。第一次测 试的结果弃之不用,因为开始时JVM还没达到理想工作状态。每秒的请求吞吐量由剩下的三次测试平均得出。你可以看到下面的平均吞吐量。

替代JBoos AS的应用服务器,WildFly 8 压力测试

但是,这些平均值,并未画出全貌。细看一下JBoss EAP的压力测试结果,在不同的JVM中压力测试结果的波动比WildFly的表现波动更大,不如其稳定。

替代JBoos AS的应用服务器,WildFly 8 压力测试

JBoss EAP在第二次测试时看起来在这两种JVM版本下运行达到最佳表现(高度一致),但这可能只是一种巧合。很明确的是,WildFly团队在创建这套应用程 序服务器软件时做了大量的工作,虽然它可能不是完全地更快,但在实现类似性能水平的基础上提供了更高水平的一致性。对JBoss EAP和WildFly来说,同样在JDK8下的压力测试仍比在JDK7下的压力测试有一定的标准落差,但看起来WildFly是在类似的水平上执行的。 看到其他应用服务器,如GlassFish,和JBoss EAP与WildFly的过招结果如何将是很有趣的,所以我可能很快会重温这个话题的。