I guess 2 GB is not enough for bitcoind when you have 1 GB allocated as key buffer for MySQL. A few hours after syncing I had a second crash and bitcoind stopped again. This time no biggie as I had a snapshot of the bitcoin directory saved a couple hundred blocks back. Simple copy and change of permissions and it was back up again.
sudo cp -r /var/data/bitcoin.449520 /var/data/bitcoin sudo chown btc: /var/data/bitcoin
It was pretty clear to me this was probably because of lack of memory. It may have been the
StdAlloc Exception error messages that gave it away. It plainly likes to have more than 1GB available; but how much more? Well, seems like around 103 MB will work - based on the last 24 hours trial.
After this crash I decided I'd better add a swap file for the VPS. Those with 4GB+ probably don't need this unless they have allocated too much to MySQL or other RAM hungry inhabitants. It takes mere seconds to set up, assuming you can spare 1 GB of disk space, but first check if you don't have swap space allocated already - many VPS servers come configured with zero. Use
free -m, and look for the swap values. To add a basic swap file:
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
And to make it mount at boot up, add this line to your
/etc/fstab file at bottom:
/swapfile none swap sw 0 0
And verify again with
free -m. This should really help bitcoind not lose it's mind when in borderline memory conditions. After 24 hours running like this the amount of swap used shows in
htop as 103 MB. It must have crawled slowly up there; when I checked shortly after creation it only had 1 MB used. So far there have not been any more crashes - but that reminds me I should go make a more recent snapshot.
sudo stop sqlchain sudo stop bitcoin ( view the log file, smart alec - also lets you see the actual last block ) sudo cp -r /var/data/bitcoin /var/data/bitcoin.449771 (for example) sudo rm -rf /var/data/bitcoin.440633 (again as example, I keep two snapshots)
Be sure to stop bitcoind briefly, or files could be in an unstable state; which means also stop sqlchain. It currently doesn't behave very well when bitcoind goes away, or mysql for that matter; both fixes are on the todo list.