gpt4 book ai didi

jdbc - HikariCP:从 BoneCP 迁移并分析基准数据

转载 作者:行者123 更新时间:2023-12-01 16:28:16 25 4
gpt4 key购买 nike

我正在测试从 BoneCP 到 HikariCP 的迁移。

基准测试 ( HikariCP Benchmark ) 的结果如下:

Benchmark                                 (maxPoolSize)  (pool)   Mode  Samples      Score  Score error   Unitsc.z.h.b.ConnectionBench.cycleCnnection               32  hikari  thrpt       16   1033,071       38,893  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32    bone  thrpt       16   1648,954       42,610  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32  tomcat  thrpt       16    592,838       21,709  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32    c3p0  thrpt       16    125,857        3,666  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32   vibur  thrpt       16    831,693        9,299  ops/msc.z.h.b.StatementBench.cycleStatement                32  hikari  thrpt       16  49983,959     4796,385  ops/msc.z.h.b.StatementBench.cycleStatement                32    bone  thrpt        8   7022,146      526,111  ops/msc.z.h.b.StatementBench.cycleStatement                32  tomcat  thrpt       16  28777,731     1011,316  ops/msc.z.h.b.StatementBench.cycleStatement                32    c3p0  thrpt       16   3367,641      137,937  ops/msc.z.h.b.StatementBench.cycleStatement                32   vibur  thrpt       16   1739,060       45,451  ops/ms

我认为分数越高越好,所以:

  • 为什么 HikariCP 中的 CycleConnection 比 BoneCP 低?
  • 考虑到 CycleConnection 结果,cycleStatement 结果是否足够好,可以迁移到 HikariCP?
  • 分数错误列是什么意思?

这些主题或相关迁移到 HikariCP 的任何提示、建议等对我都非常有帮助。

非常感谢

首次更新:

@brettw,感谢您的建议,并祝贺您的​​出色工作。

我昨晚用 nohup ./benchmark.sh & 进行了完整的运行,并得到了这些结果:

Benchmark                                 (maxPoolSize)  (pool)   Mode  Samples      Score  Score error   Unitsc.z.h.b.ConnectionBench.cycleCnnection               32  hikari  thrpt      150    965,017       27,307  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32    bone  thrpt      150   1528,097       26,963  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32  tomcat  thrpt      150    473,702        8,068  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32    c3p0  thrpt      150    108,527        1,591  ops/msc.z.h.b.ConnectionBench.cycleCnnection               32   vibur  thrpt      150    740,603       14,556  ops/msc.z.h.b.StatementBench.cycleStatement                32  hikari  thrpt       60  47998,292     3112,217  ops/msc.z.h.b.StatementBench.cycleStatement                32    bone  thrpt      120   6210,647      110,100  ops/msc.z.h.b.StatementBench.cycleStatement                32  tomcat  thrpt      150  25919,389      437,232  ops/msc.z.h.b.StatementBench.cycleStatement                32    c3p0  thrpt      150   3074,133       62,629  ops/msc.z.h.b.StatementBench.cycleStatement                32   vibur  thrpt      150   1517,554       25,027  ops/ms

查看扩展输出,我在日志中看到此异常堆栈跟踪 6 次:

Iteration  15: [com.zaxxer.hikari.benchmark.StatementBench.cycleStatement-jmh-worker-7] INFO com.zaxxer.hikari.pool.HikariPool - HikariCP pool HikariPool-0 is shuttingdown.java.lang.IllegalStateException: Attempt to remove an object from the bag that was not borrowed or reserved        at com.zaxxer.hikari.util.ConcurrentBag.remove(ConcurrentBag.java:207)        at com.zaxxer.hikari.pool.HikariPool.closeConnection(HikariPool.java:394)        at com.zaxxer.hikari.pool.HikariPool.releaseConnection(HikariPool.java:223)        at com.zaxxer.hikari.proxy.ConnectionProxy.close(ConnectionProxy.java:216)        at com.zaxxer.hikari.benchmark.StatementBench$ConnectionState.teardown(StatementBench.java:63)        at com.zaxxer.hikari.benchmark.generated.StatementBench_cycleStatement.cycleStatement_Throughput(StatementBench_cycleStatement.java:100)        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:204)        at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:186)        at java.util.concurrent.FutureTask.run(FutureTask.java:262)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)

最后,我回答您帖子中的其他主题:

  • pom.xml 已更新,可以快速、完整地执行。
  • 干净启动后无法执行测试。
  • 有一个带有 Web 应用程序的 Tomcat 服务器。在测试执行过程中,计算机既没有高负载,也没有运行繁重的进程。
  • JDK版本为jdk1.7.0_67
  • Linux 是 x86_64-redhat-linux-gnu
  • CPU 型号为 Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz
  • 也许是一个重要问题:测试已在使用 VMWare 部署的虚拟机中运行。

再次感谢

第二次更新:关于迁移的问题变成了另一个关于虚拟化和基准测试的问题,这也很有趣也很有用。

现在,我必须专注于虚拟环境。当我有一点时间时,我将在真实且直接的环境中运行测试,并将结果带到这里。我打赌这些测试将显示 HikariCP 是最好的连接池。

@brettw,感谢您的支持和良好的态度。

最佳答案

这里是 HikariCP 的作者之一。有几件事需要检查。首先,看起来您使用了基准测试的“快速”模式,我们通常用它来快速“冒烟测试”更改。我建议完整运行。上面的结果看起来有点奇怪,至少在 cycleStatement 测试中是这样,因为所有池都应显示 16(在快速模式下)样本,但 BoneCP 仅显示 8 。完整运行需要相当多的时间,但如果您只想比较两个池,您可以大大缩短时间,如下所示:

./benchmark.sh -p pool=hikari,bone

其次,编辑基准测试的 pom.xml 文件,并确保它使用最新的 HikariCP 版本。现在应该是版本 2.2.5(非 SNAPSHOT),但是提交的 pom.xml 看起来仍然有 2.1.1-SNAPSHOT。

“分数误差”是样本中的一种标准偏差,如果机器上有其他消耗 CPU 的进程,它往往会变得更高。我建议在干净启动后、系统“稳定”一两分钟后运行基准测试,并确保测试期间没有运行无关的进程(浏览器等)。

我们对您的最新运行结果感兴趣,因为我们尚未看到 HikariCP 得分低于任何池子。您还可以告诉我们您在什么环境下运行吗? CPU 类型/内核、操作系统、Java 版本以及是否是虚拟机。谢谢。

更新:
8核的E5-2690怎么可能得分这么低呢?在我的台式机上 i7 Haswell 4 核 I get HikariCP scores 23130.760,骨骼分数为 10378.450,而 E5-2690 上的分数为 965.017 和 1528.097?

我想知道(并正在研究)VMWare Hypervisor 限制之类的东西是否正在发挥作用。我承认我远不是 VM Hypervisor 方面的专家。在基准测试中 HikariCP 肯定会惩罚你的 CPU。

更新2:
回复下面的评论。这个问题本身不是虚拟化。虚拟化非常棒,而且会持续下去。问题基本上归结为在虚拟化硬件上运行基准测试是否准确或有意义。

我的理论是,一般来说,在真实硬件上进行更高基准测试的库在虚拟化硬件上也可能表现更好 - 即使无法使用相同的工具在那里进行测量。这就是为什么上面我建议运行基准测试工具,例如 JMeter反对预期的应用。尝试使用库 A (HikariCP) 和库 B (BoneCP)。这对于任何两个库都成立。

总而言之,运行利用硬件计数器等优势的基准测试工具很可能会在虚拟化硬件上产生奇怪的结果。这可能是在 VMWare 论坛中提出的一个很好的话题。

关于使用哪个库,可以运行 JMeter 或类似的宏基准测试工具,也可以掷硬币。

关于jdbc - HikariCP:从 BoneCP 迁移并分析基准数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27155549/

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