相关疑难解决方法(0)

在没有实际负载增加的情况下,Java 9 G1工作约6小时后为什么会出现性能下降?

我将1个实例(2个vCPU,2GB RAM,加载〜4k req/sec)切换到Java 9(来自最新的Java 8).有一段时间,一切都很好,CPU使用率和以前一样.然而,在大约6小时后,CPU消耗无缘无故地增加了4%(从21%增加到25%).我没有流量峰值,没有内存消耗增加,没有度量标准更改(我在代码中的每个方法都有计数器).没有.

我离开这个实例大约12个小时,期待它会恢复原状.但没有改变.它开始消耗更多的CPU.

top命令显示实例的CPU峰值比Java服务器进程通常多.我最近读到G1不适合高吞吐量.所以我得出结论,理由可能在G1.

我重新启动了实例:

java -XX:+UseParallelGC -jar server-0.28.0.jar
Run Code Online (Sandbox Code Playgroud)

经过约20小时的监测,一切都和以前一样好.与前几天相比,CPU消耗量达到了21%的水平.

Java 9部署后的CPU使用率(6小时):

在此输入图像描述

7小时后CPU增加+ 12小时"未触及"(7d比例):

在此输入图像描述

CPU后 - XX:+UseParallelGC(24h刻度):

在此输入图像描述

所以我的问题是 - 是G1的预期行为吗?其他人看到类似的东西?

Ubuntu 16.04 x64

java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)

编辑03.01.2019

试图在java 10.0.2上使用G1运行一个相同的服务器:

java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

UseParallelGC服务器重启后,G1消耗的CPU比刚刚多40%.

java performance garbage-collection g1gc java-9

48
推荐指数
1
解决办法
1628
查看次数

Java 11中的空方法明显慢于Java 8

当我遇到一些令人惊讶的数字时,我正在使用jmh 1.21 比较JDK 8和11的性能:

Java version: 1.8.0_192, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.362 ± 0.001  ns/op


Java version: 9.0.4, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score    Error  Units
MyBenchmark.emptyMethod  avgt   25  0.362 ±  0.001  ns/op


Java version: 10.0.2, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.723 ± 0.001  ns/op


Java version: 11.0.1, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.724 ± 0.002 …
Run Code Online (Sandbox Code Playgroud)

java-8 jmh java-11

29
推荐指数
1
解决办法
1308
查看次数

在Java 11中使用堆栈跟踪的速度明显慢于Java 8

当我遇到一些令人惊讶的数字时,我正在使用jmh 1.21 比较JDK 8和11的性能:

Java version: 1.8.0_192, vendor: Oracle Corporation

Benchmark                              Mode  Cnt      Score    Error  Units
MyBenchmark.throwAndConsumeStacktrace  avgt   25  21525.584 ± 58.957  ns/op


Java version: 9.0.4, vendor: Oracle Corporation

Benchmark                              Mode  Cnt      Score     Error  Units
MyBenchmark.throwAndConsumeStacktrace  avgt   25  28243.899 ± 498.173  ns/op


Java version: 10.0.2, vendor: Oracle Corporation

Benchmark                              Mode  Cnt      Score     Error  Units
MyBenchmark.throwAndConsumeStacktrace  avgt   25  28499.736 ± 215.837  ns/op


Java version: 11.0.1, vendor: Oracle Corporation

Benchmark                              Mode  Cnt      Score      Error  Units
MyBenchmark.throwAndConsumeStacktrace  avgt   25  48535.766 ± 2175.753 …
Run Code Online (Sandbox Code Playgroud)

performance java-8 jmh java-11

27
推荐指数
2
解决办法
2251
查看次数

标签 统计

java-11 ×2

java-8 ×2

jmh ×2

performance ×2

g1gc ×1

garbage-collection ×1

java ×1

java-9 ×1