繁体   English   中英

Java Berkeley DB DPL-读取操作峰值

[英]Java Berkeley DB DPL - read operation spikes

我在Java中使用DPL。 我有1GB的数据存储区。 我解雇了5个试图在1秒间隔后读取相同记录的线程。 最初,读取操作大约需要15ms的时间进行5-10次读取,然后稳定到0ms(微秒),然后在读取10-20次之后,读取操作会产生一个尖峰(15ms)。

根本原因是什么以及如何配置BDB来解决它。

谢谢

这很可能是垃圾收集器,影响了应用程序的性能。 尝试使用以下命令监视GC周期:

jstat -gccause <pid-of-java-process> 200

并观察到峰值和GC活性之间没有任何相关性。 Jstat提供以下输出:

100.00   0.00   5.63  86.19  60.53    768    4.165    16    0.796    4.960 unknown GCCause      No GC               
  0.00  96.01   0.00  87.15  60.53    769    4.172    16    0.796    4.967 unknown GCCause      No GC               
  0.00  96.01  82.86  87.15  60.54    770    4.172    16    0.796    4.967 unknown GCCause      Allocation Failure  
 75.27   0.00  69.29  87.15  60.54    770    4.175    16    0.796    4.971 unknown GCCause      No GC               
  0.00  94.75  16.33  87.30  60.56    771    4.179    16    0.796    4.975 unknown GCCause      No GC               
 41.07   0.00   0.00  87.69  60.59    772    4.184    16    0.796    4.980 unknown GCCause      No GC   

当您看到Allocation failure这意味着由于内存不足而启动了完整的GC。

顺便说一句, jstat是JDK发行版的一部分,因此必须安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM