Corda节点在尝试加载数据时出现JVM OutOfMemory异常

Corda节点在尝试加载数据时出现JVM OutOfMemory异常,corda,Corda,背景: 我们正在尝试使用jmeter在自定义CorDapp(Corda-3.1)中加载数据。 我们的CorDapp分布在六个节点(三方、两名公证人和一名Oracle)。 为加载数据而执行的流具有非常小的业务逻辑,有三个参与者,需要两方签署事务。 以下是环境、配置和测试的详细信息: 服务器:Ubuntu 16.04 内存:8GB Corda.jar的内存分配:4GB Corda-webserver.jar的内存分配:1GB JMeter配置-线程(用户):20(每个线程每秒1个事务) 结果: 节点

背景:
我们正在尝试使用jmeter在自定义CorDapp(Corda-3.1)中加载数据。
我们的CorDapp分布在六个节点(三方、两名公证人和一名Oracle)。
为加载数据而执行的流具有非常小的业务逻辑,有三个参与者,需要两方签署事务。
以下是环境、配置和测试的详细信息:
服务器:Ubuntu 16.04
内存:8GB
Corda.jar的内存分配:4GB
Corda-webserver.jar的内存分配:1GB
JMeter配置-线程(用户):20(每个线程每秒1个事务)

结果:
节点B在大约21000个成功事务(大约3小时30分钟)后崩溃,并显示“java.lang.OutOfMemoryError:java堆空间”。一段时间后,由于与节点B的连续“握手错误”,其他节点崩溃。
我们使用EclipseMat分析了堆转储,发现创建了超过21000个hibernate SessionFactoryImpl实例,它们占用了节点B上85%以上的内存

我们需要理解为什么Corda network创建了这么多对象并将它们保存在内存中。
我们正在继续调查,因为我们不能100%确定这是否完全是一个错误。
问题的解决方案对于我们继续进行进一步测试至关重要。

注意-我们有更多关于调查的详细信息,但我们无法将其附加到此处,但可以通过电子邮件发送

如果您是用Java开发的,那么您遇到的问题很可能已经由


Corda 3.1中尚未提供该修复程序,但JIRA票证提供了一种解决方法。您需要在已定义的
MappedSchema
的任何子类上重写
equals
hashCode
。这应该可以解决您观察到的问题。

在git上上载并共享链接(如果可能)。您可以共享JMeter脚本吗?@optic问题已解决。!您是否需要JMeter脚本作为自己的参考?是的。你能分享吗?覆盖了超级类的equals和hashcode方法解决了这个问题,我成功发布了100000个事务,corDapp仍然准备接受更多事务:)