生存压力大,亚历山大,今年开始学习Java了。
java界听说tomcat挺厉害的,还有jetty,网友推荐了一个叫resin,听说也不错。
五一节前对他们性能及稳定性做了对比,结果如下,供大家参考:
测试项目:
Spring Boot hello world war包
Jvm参数: -Xmx4096m -Xss1m -Xdebug -Xnoagent -Duser.timezone=GMT+8
Apache Utils
ab并发测试(单位:处理请求数/秒)
|
Resin4.0.53 |
Tomcat9.0.6 |
嵌入式tomcat |
嵌入式jetty |
20次热身 |
301.62 |
69.51 |
34.83 |
108.63 |
第一次2万 |
1879.81 |
2054.78 |
2321.64 |
1865.33 |
第二次2万 |
2787.43 |
3167.27 |
3285.55 |
2987.00 |
第三次2万 |
3157.62 |
3261.77 |
3481.85 |
3034.85 |
第四次2万 |
2958.72 |
3609.55 |
3404.02 |
2944.49 |
第一次20万 |
2873.62 |
3359.72 |
3381.35 |
3054.06 |
第二次20万 |
2832.29 |
3429.02 |
3435.94 |
3057.91 |
第三次20万 |
2832.49 |
3688.58 |
3437.44 |
2869.04 |
第四次20万 |
3044.37 |
3354.39 |
3452.87 |
3028.47 |
平均值 |
2518.66 |
2888.29 |
2915.05 |
2549.98 |
奔溃/重启 |
否 |
否 |
否 |
否 |
resin监控
Jconsole
jvisualvm
嵌入式tomcat
Tomcat:
嵌入式jetty:
测试结果
堆使用:嵌入式tomcat及嵌入式jetty开销比较小。其中嵌入式tomcat比嵌入式jetty开销更稳定,并发结束后堆使用即刻释放,趋于稳定,在100M左右,resin开销比较大,达到350-400M,并发结束后以后稳定。
线程使用:嵌入式tomcat<嵌入式jetty<resin
总体推荐使用 :嵌入式tomcat>嵌入式jetty>resin
容错处理
容器容错处理以及日志输出在业务场景中也会影响系统的稳定性以及处理能力。
Java中日志输出功能会消耗大量IO,在容器实际选择过程中也要考虑这方面的性能。
比如:tomcat日志大量输出错误日志,错误日志几百M甚至1G左右的时候,记录日志也会使一笔很大的IO开销。
Tomcat:
协议错误,路径出错控制台大量错误信息。
内存变化240-310M
Jetty
容错处理好,内存变化比较小,239-380M,信息量比tomcat少,只显示关键性错误。
Resin
内存变化:88M-89M,基本无变化
Resin有一套优秀的日志处理模块:
按日志大小、周期(天、周、月)回滚可与apache日志模块媲美。
测试结果
本轮web容器稳定性没有出现问题,嵌入式jetty出错信息量与嵌入式tomcat相当,整体来说jetty处理错误信息相对友好化。Resin处理错误信息友好程度比嵌入式jetty和嵌入式tomcat好。出错信息量少。
推荐顺序:resin>嵌入式jetty>嵌入式tomcat
来源:oschina
链接:https://my.oschina.net/u/4305496/blog/3989224