Hari jumat yang lalu (25/07/2014), saya upgrade cPanel salah satu server saya. Saya juga harus upgrade mySQL karena cPanel yang versi terbaru ini mengharuskan demikian. Ternyata setelah saya upgrade mySqlnya, masalahpun terjadi.
Beberapa kali saya mendapat laporan crash via email. Konsumsi RAM oleh MySQL rupanya meningkat di atas memori RAM yang tersedia, sehingga sering terjadi OOM (Out of memory). Akibatnya web jadi error.
Setelah saya konsultasikan hal ini dengan manager server saya, mereka katakan bahwa saya harus memperbaiki script saya agar tidak menguras memori. Wah, kalau memperbaiki script, apalagi sebanyak itu, tidak mungkin saya lakukan saat ini. Apakah harus upgrade memori ? sepertinya bukan karena ini masalahnya. Pasti ada sesuatu dengan MySQL 5.6 ini.
Dan ternyata benar. Saya cek di google banyak yang mengeluhkan hal yang sama. Konsumsi RAM naik drastis setelah upgrade ke MySQL 5.6.
Ada apa dengan MySQL 5.6 ?
Setelah mencari ke sana kemari, saya akhirnya menemukan artikel di http://blog.triantech.com/memory-drain-issues-on-mysql-5-6/.
MySQL 5.5 ke bawah hanya akan mengalokasikan RAM sesuai kebutuhan, dengan batas maksimum untuk setiap buffer / cache yang yang ditetapkan di my.cnf. Sedangkan MySQL 5.6 sekarang mengalokasikan memori ini, bahkan jika itu tidak aktif diperlukan, sehingga jejak memori lebih tinggi sekalipun tidak digunakan. Pada saat pemanfaatan penuh, harusnya sama saja. Namun hal ini kenyataannya sering menyebabkan crash. Setelah digali lebih lanjut tentang masalah ini, ternyata ada perubahan yang dibawa di dalam versi terbaru dari MySQL dengan parameter ‘performance_schema‘.
Mulai dari MySQL 5.6, parameter performance_schema ini diaktifkan secara default dan mengkonsumsi memori server bahkan pada keadaan idle / tidak digunakan.
Untuk menonaktifkan performance_schema, silahkan ikuti langkah berikut :
1. Login ke SSH melalui putty
2. Ketikkan perintah berikut : nano /etc/my.cnf
3. Tambahkan syntax berikut di bagian paling bawah : performance_schema=0
Lalu tekan tombol CTRL+X lalu Y, enter.
4. Restart mysql dengan perintah berikut : /etc/rc.d/init.d/mysql restart
Selamat mencoba, semoga berhasil!