[英]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.