Site shows "Error establishing a database connection"

June 9, 2019 198 views
WordPress Ubuntu 18.04

My WordPress site had been fine all along, but roughly 36 hours ago, I noticed that it doesn't load the site but shows Error establishing a database connection instead.

I certainly have not made any changes to the WordPress site itself, or my droplet settings recently.

What might have caused this? Thanks for any advise!

1 comment
  • I am not sure if this was entirely the right approach, but rebooting my droplet using these instructions helped.

    I am going to leave this thread open for any additional inputs.

3 Answers
jtittle MOD June 10, 2019
Accepted Answer

@arunsathiya

If the error was at random, I would recommend checking the MySQL error log to see if there was a crash. The command below will output the last 50 lines from the MySQL error log.

tail -50 /var/log/mysql/error.log

If you see lines with Out of memory or Killed process, MySQL is unable to allocate the RAM it needs to continue to run and the OOM killer is killing off the process.

There are a few ways to resolve this

  • Reboot the Droplet (short-term solution to get you back online)
  • Resize your Droplet
  • Optimize the MySQL configuration (MySQL Tuner is a great tool to get you started)
  • Enable Caching for your WordPress using a plugin (W3 Total Cache works very well)

Caching can help reduce resource usage by caching commonly requested data which, in turn, reduces the number of database calls that need to be made. It can be highly effective when combined with MySQL Tuner and general optimization.

Resizing is really the final recommendation when you've reached the point where you've enabled caching, optimized your configuration the best you can, and you still can't get the resource usage under control (i.e. you just need more RAM).

  • Thank you for the detailed suggestions -- I did not have a chance to check MySQL error log, but this is good info to have. I can check when this happens again.

Maybe there was a locked table and you reached your MySQL max connections limit or the droplet ran out of memory and MySQL got killed. Were you able to check if MySQL was running and could you check your connections?

  • Sadly I did not. I attempted to check, but wasn't very certain which log file I should be looking into. This has not happened again, but if it does, will make sure to check. Thank you.

Have another answer? Share your knowledge.