gpt4 book ai didi

java - Linux JVM 的 JAX WS 服务器实现性能问题?

转载 作者:IT王子 更新时间:2023-10-29 00:43:27 27 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题。内置的 JAX WS 服务器实现在 Linux 机器上比在 Mac OS X 或 Windows 上慢 100 倍

我创建并分享了一个 JMH 测试:https://github.com/Andremoniy/linuxjvmjaxwstest

基本上它做了以下事情:

  • 使用一种 SOAP 方法启动 JAX WS:

    endpoint = Endpoint.publish("http://localhost:8888/ ", new FooServiceImpl());

  • 执行客户端对此方法的请求:

    字符串结果 = state.client.foo(state.foo);

在具有 2 个内核的 Intel Core i7 的 Mac OS X 上,它给了我:

# JMH version: 1.19
# VM version: JDK 1.8.0_151, VM 25.151-b12
# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/bin/java
...
Result "test.openjdk.MyBenchmark.testMethod":
3077.813 ±(99.9%) 51.818 ops/s [Average]
(min, avg, max) = (1718.347, 3077.813, 3315.271), stdev = 219.400
CI (99.9%): [3025.995, 3129.630] (assumes normal distribution)

# Run complete. Total time: 00:06:49

Benchmark Mode Cnt Score Error Units
MyBenchmark.testMethod thrpt 200 3077.813 ± 51.818 ops/s

同一台机器,没有CPU限制的docker:

# JMH version: 1.19
# VM version: JDK 1.8.0_151, VM 25.151-b12
# VM invoker: /usr/java/jdk1.8.0_151/jre/bin/java
...
Result "test.openjdk.MyBenchmark.testMethod":
19.882 ?(99.9%) 0.169 ops/s [Average]
(min, avg, max) = (10.031, 19.882, 20.104), stdev = 0.715
CI (99.9%): [19.714, 20.051] (assumes normal distribution)

# Run complete. Total time: 00:07:01

Benchmark Mode Cnt Score Error Units
MyBenchmark.testMethod thrpt 200 19.882 ? 0.169 ops/s

我试过 docker openjdk:8u151 以及 OracleJava .我还尝试在 VirtualBox Ubuntu 16.04 和 AWS EC2 Ubuntu 实例上运行它 - 在 Linux 机器上它总是大约 ~20 ops/s

但是当我将服务器实现更改为 Jetty 时:

    ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
server.setHandler(contextHandlerCollection);

JettyHttpServerProvider.setServer(server);
HttpContext context = new JettyHttpServerProvider().createHttpServer(new InetSocketAddress(8888), 5).createContext("/");

Endpoint endpoint = Endpoint.create(new MyBenchmark.FooServiceImpl());
endpoint.publish(context);

server.start();

Linux 和其他操作系统上的性能差异消失了。这意味着 JRE/OpenJDK for Linux 的内置 HTTP 服务器实现中存在一些错误。还是我遗漏了什么?

最佳答案

Java 开发人员支持团队承认这是一个错误:

https://bugs.openjdk.java.net/browse/JDK-8193236

关于java - Linux JVM 的 JAX WS 服务器实现性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47645817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com