New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Snapshot transfer performance #1678
Comments
My test host is an AWS EC2 instance m5.2xlarge with 8 vCPUs, 32.0 GiB RAM, and EBS SSD storage. |
@aderouineau -- when a Snapshot is transferred to a node, in your mental model how many copies of the SQLite database are made on the receiving node? |
On the receiving node two copies are made of the received snapshot -- one to that copies the snapshot to its internal store, the other which then takes that copy, and makes the working SQLite copy that rqlite uses to serve queries. But I see you're saying the network transfer speed itself is slower than you expect. One other thing to be aware is that rqlite gzip-compresses the snapshot on the sending side, and decompresses it on the receiving side. It does this to reduce network bandwidth. In your testing are you streaming the data over the local network, in addition to running your
|
Both nodes are running on the same machine and using |
I understand, I'm just pointing that the |
I'll look into a better benchmark and see if this is still a problem. |
Maybe run a test using netcat. I think if you put gzip and netcat between the
|
Correct comment above. |
What version are you running?
8.19.0
Are you using Docker or Kubernetes to run your system?
Neither: calling application directly
Are you running a single node or a cluster?
Single quorum node with a single read-only node.
What did you do?
./rqlite-v8.19.0-linux-amd64/rqlited -node-id 1 data1
.boot
./rqlite-v8.19.0-linux-amd64/rqlited -raft-non-voter=true -http-addr=localhost:4011 -raft-addr=localhost:4012 -join=localhost:4002 -raft-log-level=INFO data2
. This made the read-only node get the 10+GB snapshot from the leader. The logs show a rate of 105 MB/s.dd if=<(openssl enc -pbkdf2 -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero) of=random_data bs=100M count=100 iflag=fullblock
dd if=/home/derouin/rqlite/random_data of=/home/derouin/rqlite/random_data2
which gave a rate of 207 MB/s.Logs showing snapshot transfer:
What did you expect to happen?
I expected the rqlite snapshot transfer speed to be closer to 207 MB/s.
What happened instead?
The rqlite snapshot transfer speed was only 105 MB/s (about ~50%)
The text was updated successfully, but these errors were encountered: