MySQL Server Mati Mendadak

Jadi, beberapa hari yang lalu saya sedikit kaget dengan menurunnya kunjungan web ke Bentang Nusantara secara mendadak. Usut punya usut, ternyata status MySQL-nya mati. Untuk menghidupkannya sederhana, cukup login ke server dengan SSH, kemudian jalankan perintah service mysql start/restart. Sampai di sini, web dapat diakses kembali.

Sayangnya, tragedi MySQL mati ini tidak hanya berlangsung sekali. Kasusnya hampir terjadi setiap beberapa menit atau beberapa jam sekali. Saya pikir, ada service lain yang menyebabkan matinya server MySQL ini. Saya coba alternatif dengan cara me-restart server, dan memulainya kembali dengan segar.

Dan, kasus mati-nya service MySQL masih sering terjadi.

Akhirnya, sebagai langkah troubleshoot pertama, diambil langkah untuk melihat berkas log, baik dari log MySQL maupun log system.

1) Melihat log MySQL. Karena memang yang bermasalah adalah service ini.

151009 18:56:15  InnoDB: Waiting for the background threads to start
151009 18:56:16 InnoDB: 5.5.44 started; log sequence number 1717530
151009 18:56:16 [Note] Server hostname (bind-address): '127.0.0.1'; por$
151009 18:56:16 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
151009 18:56:16 [Note] Server socket created on IP: '127.0.0.1'.
151009 18:56:16 [Note] Event Scheduler: Loaded 0 events
151009 18:56:16 [Note] /usr/sbin/mysqld: ready for connections.

Ada yang mencurigakan? Sejujurnya, saya sendiri tidak menemukan (atau tidak bisa membaca) masalah dari log di atas.

2) Dengan melihat log system. Dan apa yang saya dapatkan?

Out of memory in UB 92092: OOM killed process 16053 (mysqld) score 0 vm:884628kB, rss:34696kB, swap:616kB

Ketemulah permasalahannya. Spesifikasi minim server saya, tidak cukup kuat untuk menangani permintaan yang lumayan banyak dari sisi client ke basisdata. Sebelum responnya diproses dan disampaikan ke client, service MySQL-nya mati duluan.

Lantas, bagaimana solusinya? Ada dua pemecahan yang bisa diambil:

  • Meng-upgrade spesifikasi server.
  • Optimize dari sisi aplikasi, dalam hal ini saya menggunakan CMS Wordpress sebagai engine-nya.

Poin pertama, saya rasa cukup praktis. Sayangnya, saya harus merogoh kantong lebih dalam lagi untuk spesifikasi hardware lebih tinggi.

Jalan satu-satunya adalah mengambil poin kedua, yaitu optimize aplikasi menggunakan cache. Selain karena memang web tersebut bukan aplikasi transaksional, cache juga membantu cepatnya akses aplikasi dan mengurangi permintaan ke basisdata secara langsung, sehingga dapat mengurangi beban server.

Beruntung, sementara belum terjadi kasus seperti yang di atas.

Oh ya, ngomong-ngomong, saya menggunakan plugin WP Super Cache untuk menangani berkas cache secara otomatis. Soal fungsi, instalasi dan penggunaan, akan saya publikasikan di tulisan lain.