I'm running a geth node on AWS and it's fully synced, but looking at the logs and the blocks mined I see that it takes a lot of time to import a new block.

For example:

Geth log

INFO [01-14|18:15:34.365] Imported new chain segment               blocks=1    txs=188  mgas=9.978   elapsed=2.180s    mgasps=4.576   number=9280706 hash=c7050a…29c316 dirty=662.81MiB

Block information

Block Number: 9280706
Timestamp: Jan-14-2020 06:14:57 PM +UTC

It took more than 30 seconds to import this block. It happens with almost all blocks.

Is it a problem with the network or size of the server? I'm using a AWS server (500GB SSD, 8GB RAM, dual core). CPU usage never went over 85%

Is this normal?

Also, does anyone know where I can find what each term of the log means?

Many thanks in advance!

  • Have you figured out any way to reduce this ? I'm looking at the same thing, it's fucking slow! Commented Dec 11, 2020 at 23:05
  • @JaredSmith unfortunately I couldn't. I'm not running the node anymore, but I had the same delay after upgrading the VPS (16GB + 4 cores)... I also encountered a similar delay using third-party services (Rivet)
    – rGonzalez
    Commented Dec 14, 2020 at 1:46

1 Answer 1


Is this normal?

Unsure what the normal sync rate currently is with that hardware setup, but it wouldn't surprise me, particularly with a block of that size. (Someone who's run a sync recently can add more details or add a correction.) If you look at block 9280706 on Etherscan, you'll see it contains 188 transactions, 103 internal transactions, and is 99.88% full.

When you import a block, you're also importing all of the state changes associated with the transactions inside that block. Applying those state changes to the overall state you've synced so far is what's taking a majority of the time.

From Peter, one of the main Geth devs:

"To truly have a synchronized node, you need to download all the account data, as well as all the tiny cryptographic proofs to verify that no one in the network is trying to cheat you. This itself is already a crazy number of data items. The part where it gets even messier is that this data is constantly morphing: at every block (15s), about 1000 nodes are deleted from this trie and about 2000 new ones are added. This means your node needs to synchronize a dataset that is changing 200 times per second. The worst part is that while you are synchronizing, the network is moving forward, and state that you begun to download might disappear while you're downloading, ..."

Also, does anyone know where I can find what each term of the log means?

  • blocks - The number of blocks imported.
  • txs - The number of transactions being imported. (We're importing a full block here; 9280706 contains 188 transactions.)
  • mgas - Million gas. Those 188 transactions use 9,978,0779,978,077 gas.
  • elapsed - The time taken to download the block. This doesn't include the time taken to apply the state changes, which you've seen takes much longer.
  • mgasps - Million gas per second. We imported 9.978 Mgas of work in 2.180 seconds.
  • number - The block number.
  • hash - The hash of the block header.
  • dirty - This is less intuitive. It's a measure of the amount of state change (disk I/O) associated with the imported data. So importing this block will result in rewriting 662 MB of data.
  • I understand that it is not only downloading the block but also updating state (and probably doing some verification), but it seems too much time, right? I guess that I will try with a bigger server and see if time improves. Thanks for the log terms definitions!
    – rGonzalez
    Commented Jan 15, 2020 at 14:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.