Closed Viserius closed 3 years ago
Hi Viserius, can you tell us what version of Orion you're using?
Latest, i.e. 21.1.0. For context, I encounter this when generating private transactions with Hyperledger Caliper. This error occurs both when generating transactions at a speed of 10TPS or at a speed of 100+ TPS.
Thanks for that @Viserius. Are you able to share the Caliper setup or scripts - are you using a different Orion key for each private tx? ie are we talking 400 keys or just one key reused?
Also please be aware that while we're currently still supporting Orion users (until November), the project is officially deprecated. Tessera includes all the same functionality plus some extra features. Announcement https://github.com/ConsenSys/orion/blob/master/CHANGELOG.md#project-deprecation
Good to know the move to Tessera has been made! Its integration with Besu was still unstable/unfinished while I conducted my research project, which is why I sticked to Orion. As such, we can probably let this rest (unless you want to dive deeper into this to resolve it). In that case, I shared my Caliper workload and benchmark here. Basically, transactions are executed by about 100 to 400 Ethereum accounts (EOA). The key of the privacy group (for Orion) is the same for all transactions.
We're still investigating this issue and will get back to you with what we find @Viserius
We've investigated the issue, but weren't able to replicate. Please raise another ticket if it's encountered again. Thanks!
When configuring a private network with Besu, whether we use legacy private groups or Besu-extended data privacy, my local Orion nodes seem to crash after receiving about 400 transactions (irrespective of the speed of sending them).
Below is the error I encounter.
It seems that Orion uses a software component written in C called Apache Tuweni, for key management. Namely, every time a public key is parsed, an
org.apache.tuweni.crypto.sodium.Box.PublicKey
instance is created by reserving memory using malloc. Apparently, the memory is never freed in my case. This does not just happen only through the Receive call, but I also saw the Box.PublicKey objects are created in other places.I am confident this is not due to allocating too little memory to the java instance, as I tried allocating 4GB up to 8GB of RAM to a single Orion instance, which should be plenty for the tasks it should perform.