Multichain perfomance

+2 votes

I work with 3 multichain nodes into local network.

I’d tested blockchain (size more than 60GB) on dev pc (physic machine on windows OS, Core i5, 32 GB RAM) and has a good performance (200 req/sec and less than 10 ms response).

Then I deployed it on virtual servers and at the beginning performance was the same.

But after certain time, I’ve got a problem - rpc requests was processed very slowly (up 10 sec on getstreamitem and other methods). 

My virtual servers configuration:

3 multichain nodes in local network 100Mbit/s

One of each:

  • Virtual machine Ubuntu 16.4 x64
  • CPU 4 core
  • RAM 8 GB
  • HDD 60 GB (22 GB is used for blockchain)
  • Multichain 2.0.2 version

Average stream item size about 5-10 KB. Unique items by key about 100 000. Average load is about 5 req/sec.

Perhaps you have already got a problem like this, tell me in which direction to look.

Thanks for attention.

asked Aug 19 by strogen

1 Answer

0 votes
This isn't normal behavior at all, so we need to isolate the problem. Are you making the API requests locally on each server or remotely over the Internet. If remotely, please try doing it locally. If that solves the problem, then it will be a matter of slow network performance and not related to MultiChain specifically.

If that does not solve the problem, what about the drives? Are these local to the virtual server, or are they network connected drives? If network connected that could also be the cause, if the connection is very slow.
answered Aug 20 by MultiChain
Thanks, I will forward this to the dev team and be in touch.
We took a look at the log. The ultimate reason appears to be that you are pushing the node too hard for the hardware configuration you are now running it on, so the "memory pool" of transactions waiting confirmation grows and grows and this causes the delays you see while a new block is being processed. You can see this memory pool growing by using the getmempoolinfo API.

A possible contributor to the problem is that the disks on this virtual servers are not physically attached to them, but are accessed over some sort of network.
At the moment is

{"method":"getmempoolinfo","params":[],"id":"47083026-1567753571","chain_name":"testchain"}

{
    "size" : 110362,
    "bytes" : 2165011891
}

and continues to grow
OK, this means what I said - you are pushing transactions to this node faster than it can process them. As mentioned, a possible contributor to the problem is that the disks on this virtual servers are not physically attached to them, but are accessed over some sort of network.
...