【发布时间】:2023-03-14 23:20:02
【问题描述】:
背景:
我们正在尝试使用 jmeter 在自定义 CorDapp(Corda-3.1) 中加载数据。
我们的 CorDapp 分布在六个节点(三方、两个公证人和一个 Oracle)。
为加载数据而执行的流程具有非常少的业务逻辑,有三个参与者并且需要两个参与方来签署交易。
下面是环境、配置和测试细节:
服务器:Ubuntu 16.04
内存:8GB
Corda.jar 的内存分配:4GB
Corda-webserver.jar 的内存分配:1GB
JMeter 配置 - 线程(用户):20(每个线程每秒 1 个事务)
结果:
在大约 21000 次成功交易(大约 3 小时 30 分钟)后,节点 B 因“java.lang.OutOfMemoryError: Java heap space”而崩溃。一段时间后,其他节点由于与节点 B 的持续“握手错误”而崩溃。
我们使用 Eclipse MAT 分析堆转储,发现创建了超过 21000 个休眠 SessionFactoryImpl 实例,占用了 Node B 上超过 85% 的内存。
我们需要了解为什么 Corda 网络会创建如此多的对象并将它们持久化在内存中。
我们正在继续调查,因为我们不能 100% 确定这是否完全是 Corda 错误。
解决问题对于我们继续进行进一步测试至关重要。
注意 - 我们有更多关于我们调查的详细信息,但我们无法在此处附加它们,但可以通过电子邮件发送。
【问题讨论】:
-
上传到 git 并尽可能分享链接。
-
能分享一下JMeter脚本吗?
-
@opticyclic 问题已解决!您需要 JMeter 脚本供您自己参考吗?
-
请。可以分享一下吗?
标签: corda