加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

发布时间:2019-01-22 22:30:19 所属栏目:编程 来源:Maarten Smeets
导读:市面上可供选择的JVM刊行版照旧有不少的。选择吻合的JVM必要思量差异的身分。机能是个中一个重要的身分。靠谱的机能研究是很坚苦的。在本文中,我建设了一个测试,在差异的JVM上执行比拟测试。测试措施包罗Spring Boot REST应用,行使Prometheus监控JVM并
副问题[/!--empirenews.page--]

市面上可供选择的JVM刊行版照旧有不少的。选择吻合的JVM必要思量差异的身分。机能是个中一个重要的身分。靠谱的机能研究是很坚苦的。在本文中,我建设了一个测试,在差异的JVM上执行比拟测试。测试措施包罗Spring Boot REST应用,行使Prometheus监控JVM并行使Grafana可视化。下图是表示图。除了soapui外,全部对象都在docker容器中运行。

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

断绝滋扰身分

怎样确定没有此外身分滋扰你的办法。我们可以通过实行断绝分派给流程的资源来实现。 譬喻,分派专用CPU和牢靠命量的内存。 我还举办了几项测试,这些测试将资源限定放在负载平衡器,监控软件和可视化软件上(为这些资源分派差异的CPU和内存)。 为历程分派特定资源(行使docker-compose v2 cpuset和内存参数)好像不会对单个历程负载和相应时刻的怀抱发生很大影响。 我还较量了启动,负载和无负载环境。 在这些差异环境下,测试功效没有很大变革。

为历程分派特定CPU和内存

行使docker-compose无法为历程设置特定CPU。 docker-compose v3不支持为历程分派特定的CPU,也不支持分派资源束缚。 您可以想象在隐藏的多主机情形平分派特定CPU并非易事。 因此,我将docker-compose文件迁徙回v2,该版本应承分派特定的CPU。 可以用于监控软件,这些CPU和JVM行使的CPU隔分开。 我行使了taskset呼吁。

怜悯形测试

您怎样确保全部测试都在完全沟通的环境下举办? 当我针对JVM运行测试而来日诰日再次运行沟通的测试场景时,我的功效会有所差异。 这也许有各类缘故起因,譬喻差异的CPU会占用事变负载,并且这些CPU也忙于处理赏罚其他工作,可能我在主机或客户操纵体系中运行差异的靠山历程。 纵然初次测试单个JVM并在测试之后测试另一个JVM,功效也无法较量。 譬喻,我正在行使Prometheus网络数据。 在第二次运行时代,Prometheus数据库也许会存储更大都据。 这也许会导致添加新数据的速率变慢,这也许会影响第二个JVM机能指标。 这个例子固然也许相等牵强,但您可以采纳法子解除其他身分。 这是我选择同时执行全部测试的缘故起因。

setup

我的情形包罗一个docker-compose文件,它应承我轻松启动4个在差异JVM上运行Spring Boot应用措施。 在4个JDK的之前,我加了一个haproxy实例来举办负载平衡。 这是为了确保差异的测试之间没偶然刻相干的差别,担保全部JVM都同时处于沟通的负载下。

为了监控功效,我行使了Micrometer担保Prometheus可以或许读取JVM机能指标。 我行使Grafana对数据可视化:https://grafana.com/dashboards/4701

因为GraalVM今朝仅作为JDK 8版本提供,因此其他JVM也行使JDK 8。 当容器运行时,可以通过会见执行器url来搜查JVM版本:localhost:8080/actuator/env

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

可能行使如下呼吁:

docker exec -it store/oracle/serverjre:8 java -version

行使的JVM版本如下:

  • GraalVM CE rc9 (8u192)
  • OpenJDK 8u191
  • Zulu 8u192
  • Oracle JDK 8u181

开始测试

可以在这里下载代码,然后运行呼吁:

sh ./buildjdkcontainers.sh

docker-compose -f docker-compose-jdks.yml up

你可以可以会见:

  • 8080端口的haproxy
  • 9090端口的Prometheus
  • 3000端口的Grafana

必要设置Grafana会见Prometheus的数据

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

接下来设置Grafana中的dashboard:

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

接下来,您可以对http://localhost:8080/hello(HTTP GET)执行负载测试,并在Grafana仪表板中查察功效。

操纵体系差别

差异Docker镜像之间行使的OS差异。 操纵体系可通过以下方法确定:

  • docker exec -it store/oracle/serverjre:8 cat /etc/*-release
  • azul/zulu-openjdk:8 used Ubuntu 18.04
  • oracle/graalvm-ce:1.0.0-rc9 used Oracle Linux Server 7.5
  • openjdk:8 used Debian GNU/Linux 9
  • store/oracle/serverjre:8 used Oracle Linux Server 7.5

我以为这不会对JVM运行发生太大的影响。OracleJDK和Graalvm行使沟通的操纵体系。

测试功效

行使JVM dashboard,可以轻松区分特定的差别地区,以便进一步研究它们。

cpu行使

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

GraalVM在测试时代总体CPU行使率最高。 Oracle JDK的CPU行使率最低。

相应时刻

整体GraalVM的相应时刻最短,OpenJDK最好,紧随Oracle JDK和Zulu。 均匀而言,OpenJDK与GraalVM之间的差别约为30%。

是否值得付费?Oracle,Open JDK等四大JVM机能全面比拟

垃圾接纳

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读