Question

MySQL keeps crashing - Error establishing a database connection

Posted March 4, 2016 18.1k views
MySQLWordPressDigitalOcean

My wordpress blog has been working for over a year and all of a sudden it stopped working. This morning I posted the following question on Stack Overflow

http://stackoverflow.com/questions/35799917/wordpress-site-down-mysql-crashing

I first decided to bump my memory from 512 to 1GB on the droplet. With no responses I started doing some digging. I found this solution which looked exactly like my problem so I tried setting up a swap file

http://www.webtrafficexchange.com/comment/reply/156

Still not having any luck here and this is the latest from my logs. Anyone have any clue is to what is happening to me?

160304 14:05:29 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160304 14:05:29 [Note] Plugin ‘FEDERATED’ is disabled.
160304 14:05:29 InnoDB: The InnoDB memory heap is disabled
160304 14:05:29 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160304 14:05:29 InnoDB: Compressed tables use zlib 1.2.8
160304 14:05:29 InnoDB: Using Linux native AIO
160304 14:05:29 InnoDB: Initializing buffer pool, size = 64.0M
InnoDB: mmap(68681728 bytes) failed; errno 12
160304 14:05:29 InnoDB: Completed initialization of buffer pool
160304 14:05:29 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160304 14:05:29 [ERROR] Plugin 'InnoDB’ init function returned error.
160304 14:05:29 [ERROR] Plugin 'InnoDB’ registration as a STORAGE ENGINE failed.
160304 14:05:29 [ERROR] Unknown/unsupported storage engine: InnoDB
160304 14:05:29 [ERROR] Aborting

160304 14:05:30 [Note] /usr/sbin/mysqld: Shutdown complete

4 comments

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
4 answers

One possibility is that you are being attacked via the XML-RPC interface. It’s unfortunately a fairly common reason that MySQL will exhaust all available memory. To check if this is the case, look for mentions in the webserver’s logs: grep xmlrpc /var/log/apache2/access.log

If that is the case, take a look at this article for a few options on how to mitigate the attack:

by Jon Schwenn
WordPress is a popular and powerful CMS (content management system) platform. Its popularity can bring unwanted attention in the form of malicious traffic specially targeted at a WordPress site. There are many instances where a server that has not been protected or optimized could experience issues or errors after receiving a small amount of malicious traffic. This guide will show you how to protect WordPress from XML-RPC attacks on an Ubuntu 14.04 system.
  • Nothing came back but thank you for the suggestion

  • I spoke too soon… I have some othervhostsaccess.log(s) and xmlrpc is all over those :(

  • I turned stopped apache and restarted mysql and it looks like its running fine now…

    160304 15:07:51 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
    160304 15:07:51 [Note] Plugin ‘FEDERATED’ is disabled.
    160304 15:07:51 InnoDB: The InnoDB memory heap is disabled
    160304 15:07:51 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    160304 15:07:51 InnoDB: Compressed tables use zlib 1.2.8
    160304 15:07:51 InnoDB: Using Linux native AIO
    160304 15:07:51 InnoDB: Initializing buffer pool, size = 64.0M
    160304 15:07:51 InnoDB: Completed initialization of buffer pool
    160304 15:07:51 InnoDB: highest supported file format is Barracuda.
    160304 15:07:51 InnoDB: Waiting for the background threads to start
    160304 15:07:52 InnoDB: 5.5.38 started; log sequence number 3369568475
    160304 15:07:52 [Note] Server hostname (bind-address): '0.0.0.0’; port: 3306
    160304 15:07:52 [Note] - '0.0.0.0’ resolves to '0.0.0.0’;
    160304 15:07:52 [Note] Server socket created on IP: '0.0.0.0’.
    160304 15:07:52 [Note] Event Scheduler: Loaded 0 events
    160304 15:07:52 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.38-0ubuntu0.14.04.1’ socket: ’/var/run/mysqld/mysqld.sock’ port: 3306 (Ubuntu)

    Having issues blocking XML RPC though…

same problem
I’ve done everything but not solved.
but
Finally, I solved the problem
try this
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

by Justin Ellingwood
One of the easiest way of increasing the responsiveness of your server and guarding against out of memory errors in your applications is to add some swap space. In this guide, we will cover how to add a swap file to an Ubuntu 16.04 server. <$>[warning] [label...

Hello all,

This crash is most likely due to your system running out of memory. I’d suggest that you add a swap file to give yourself a bit more of a buffer. Check out this tutorial:

How To Add Swap on Ubuntu 18.04

What you can also do is to use the MySQLTuner script.

The MySQLTuner is a script written in Perl and allows you to quickly test your MySQL configuration and it gives you suggestions for adjustments to increase performance and stability.

According to the official GitHub page, it supports 300 indicators for MySQL/MariaDB/Percona Server in this last version.

To run the script you could do the following:

  • SSH to your Droplet
  • Download the script:
wget http://mysqltuner.pl/ -O mysqltuner.pl
  • Then execute it:
perl mysqltuner.pl

The script would run multiple checks against your MySQL instance, all checks done by MySQLTuner are documented here.

Also as stated in the official documentation, it is still extremely important for you to fully understand each change you make to a MySQL database server. If you don’t understand portions of the script’s output, or if you don’t understand the recommendations, you should consult a knowledgeable DBA or system administrator that you trust.

As a good practice make sure to always test your changes on staging environments before implementing them on your production database.

On the same note, if you want to have worry-free MySQL hosting and focus on your application, I would recommend trying out the DigitalOcean Managed Databases:

https://www.digitalocean.com/products/managed-databases-mysql/

Source:
https://www.digitalocean.com/community/questions/how-to-tweak-mysql-mariadb-configuration-for-increased-performance-and-stability

Hope that this helps!
Regards,
Alex