14

I am using the official GUI and using my own (local) node, but it freezes all the time and feels buggy overall. Is there any way to resolve this?

1 Answer 1

14

First and foremost, it's important to make sure you're running the latest version (v0.11.1.0 at the time of writing). You can check the version # on the Settings page of the GUI (under Debug info). If you're not running v0.11.1.0, please upgrade first:

How do I upgrade my software to v0.11.1.0?


This is typically caused by monerod using all your CPU during the initial sync (you can also apply this guide if it still feels buggy after you've completed the initial sync). monerod requires CPU because it needs to verify blocks. You can limit monerod's CPU usage as follows.

  1. Go to the Settings page of the GUI.

  2. Look for the daemon startup flags box.

  3. Add this line -> --max-concurrency 1

  4. Exit the GUI and make sure to stop the daemon as well.

  5. Restart the GUI + daemon.

Step 4 & 5 are needed for the flag from step 3 to take effect. Note that --max-concurrency 1 will limit your CPU usage to 1 thread.


In addition, if you're syncing the blockchain to an HDD, it'd probably be best to lower the size of the batch of blocks (block-sync-size) as well. This is done as follows.

  1. Again go to the Settings page of the GUI and look for the daemon startup flags box.

  2. Add this line after the --max-concurrency 1 line and make sure there's a space between 1 and - -> --block-sync-size 10

  3. Thus, the "full" line in the daemon startup flags box becomes -> --max-concurrency 1 --block-sync-size 10

  4. Exit the GUI and make sure to stop the daemon as well.

  5. Restart the GUI + daemon.

Step 4 & 5 are again needed for the flag from step 2 to take effect. Note that --block-sync-size 10 will reduce the batch of blocks it syncs to 10 (the default is 20) at a time.


Now, monerod also takes a lot of bandwidth during the initial sync. If you're unable to browse or use any applications that require internet connection, you can limit monerod's bandwidth as follows:

  1. Again go to the Settings page of the GUI and look for the daemon startup flags box.

  2. Add this line after the --block-sync-size 10 line and make sure there's a space between 0 and - -> --limit-rate 500

  3. Thus, the "full" line in the daemon startup flags box becomes -> --max-concurrency 1 --block-sync-size 10 --limit-rate 500

  4. Exit the GUI and make sure to stop the daemon as well.

  5. Restart the GUI + daemon.

Step 4 & 5 are again needed for the flag from step 2 to take effect. Note that --limit-rate 500 will limit the bandwidth to 500 kB/s.


Note that you can tweak the parameters / flags yourself by adjusting the value.


Lastly, the GUI itself also uses some CPU and memory. You can reduce this by running monerod separately from the GUI during the initial sync. This is done as follows:

[1] Exit the GUI and make sure to stop the daemon as well.

[2] Browse to the directory monerod is located (on Windows & Linux it's the same directory as monero-wallet-gui, whereas on Mac OS X it's -> ~/Applications/monero-wallet-gui.app/Contents/MacOS).

[3a] On Windows, open a new command prompt from the same directory as monerod.exe. This is done by first making sure your cursor isn't located on any of the files and subsequently doing SHIFT + right click. It will give you an option to "Open command window here". If you're using Windows 10, it'll, most likely, give you an option to open the Powershell.

[3b] On Linux and Mac OS X, open a new terminal from the same directory as monerod

[4a] On Windows, type the following command in the command prompt:

monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

If that doesn't work in the Powershell, type:

.\monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

If that doesn't work either in the Powershell, type:

./monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500

[4b] On Linux and Mac OS X, type the following command in the terminal:

./monerod --max-concurrency 1 --block-sync-size 10 --limit-rate 500

[5] If you were using a non-default directory for the blockchain, you have to add the --data-dir flag too if you start monerod separately. If you already have monerod running, type exit first to gracefully stop the daemon. This is done as follows:

On Windows, type the following command in the command prompt:

monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

If that doesn't work in the Powershell, type:

.\monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

If that doesn't work either in the Powershell, type:

./monerod.exe --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path\to\your\blockchain

On Linux and Mac OS X, type the following command in the terminal:

./monerod --max-concurrency 1 --block-sync-size 10 --limit-rate 500 --data-dir path/to/your/blockchain

[6] Note that, if you're running monerod separately, you have to apply the flags every time you start monerod. Thus, on Windows, probably most convenient to create a shortcut, go to properties, and add the flags after the Target. On Linux and Mac OS X, it's probably most convenient to create a little script.

[7] As a general piece of advice, if you need to shut down your PC, first shut down monerod gracefully by typing exit. Otherwise, you might corrupt the blockchain again and you'd have to start all over again.

[8] You can use status in monerod to verify whether it's fully synced. It's fully synced if your height matches the height displayed on a block explorer like, for instance, XMRchain.net.

[9] Once it's fully synced, open monero-wallet-gui. It'll automatically connect to the monerod that is already running. Note, however, that monero-wallet-gui still has to refresh the wallet, for which it currently uses the same status bar.

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