我尝试在一个事务中发送近5000个输出状态,但我的内存不足。我试图弄清楚如何增加内存。我尝试通过挤奶命令
在runnodes.bat文件中增加java -Xmx1g -jar runnodes.jar %*
但这似乎并没有增加堆大小。因此,我尝试使用给定的-Xmx1g内存选项为每个节点手动运行以下命令。
bash -c 'cd "/build/nodes/Notary" ; "/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/jre/bin/java" "-Dname=Notary-corda.jar" "-Dcapsule.jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -javaagent:drivers/jolokia-jvm-1.3.7-agent.jar=port=7005,logHandlerClass=net.corda.node.JolokiaSlf4Adapter" **"-Xmx1g"** "-jar" "corda.jar" && exit'
这解决了内存不足的问题,但是现在我开始看到ActiveMQ大邮件大小的问题
E 10:57:31-0600 [Thread-1 (ActiveMQ-IO-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$4@2cfd9b0a)] impl.JournalImpl.run - appendAddRecord::java.lang.IllegalArgumentException: Record is too large to store 22545951 {}
java.lang.IllegalArgumentException: Record is too large to store 22545951
at org.apache.activemq.artemis.core.journal.impl.JournalImpl.switchFileIfNecessary(JournalImpl.java:2915) ~[artemis-journal-2.2.0.jar:2.2.0]
有什么主意吗?
答案 0 :(得分:0)
这是因为您正在尝试发送大小接近20MB的事务。在Corda 3和更早版本中,交易大小限制为10MB,并且该金额不可配置。
在Corda 4中,交易规模的限制可以由网络运营商配置为网络参数之一(请参见https://docs.corda.net/head/network-map.html#network-parameters)。允许设置可配置限制的逻辑是,否则,较大的节点可能会通过发送非常大的事务(较小的节点无法处理)而将较小的节点欺凌网络。