Kill MySQL Process Dengan Mudah

Kill MySQL Process Dengan Mudah

Query MySQL dengan status Sleep mungkin bisa menjadi masalah yang sebagian besar orang hadapi. Lantas, jika aplikasi server kita mempunyai waktu Sleep yang cukup tinggi dan banyak status Sleepnya apakah hal tersebut masih bisa dikatakan aman? Lalu bagaimana cara mengatasi banyaknya proses Sleep ini?


Sleep Query

Sebelumnya kita mau brief di awal bahwa sleep query sebenarnya fenomena yang biasa terjadi ketika parameter database tidak di tweak. Dan kalau kita biasakan atau tidak kita kill, nanti proses ini bakal tambah penuh, dan secara langsung berdampak pada proses server anda.

Parameter Timeout

Ada beberapa cara untuk mencegah fenomena Sleep Query ini. Salah satunya adalah dengan memasang timeout pada database. Jika dalam study case saya, yang memiliki web blog dengan tingkat kepadatan 12k hingga 16k visito per bulan, bisa dibilang menengah. Biasanya timeout yang saya set adalah 30 detik.

[mysqld]
wait_timeout = 30
interactive_timeout = 30

Karena saya tidak ingin berlama-lama database terus saja melakukan query. Lebih baik buka query baru. Karena mengingat RAM pada server cukup banyak dan sudah DDR4 dan disk sudah menggunakan SSD jadi sepertinya tidak masalah.

Query Kill

Cara kedua adalah dengan mengeksekusi query kill pada database anda. Jika anda menggunakan Plesk atau cPanel maka dengan mudah bisa langsung masuk ke mysql admin.

Dimana Plesk menggunakan perintah di SSH :

plesk db

Dan cPanel menggunakan perintah di SSH :

mysql

Manual Eksekusi Kill

Sedangkan untuk eksekusi manual kill bisa menggunakan perintah berikut :

mysql> kill PID;

Dimana PID bisa kamu generate dengan menggunakan perintah :

mysql> show processlist;

Kemudian di lihat proses mana yang sekiranya perlu di kill atau di eliminasi. Cara ini biasa digunakan, namun tidak efektif jika ada query yang statusnya Sleep. Karena eksekusi cara ini hanya bisa satu per satu saja.

Massive Eksekusi Kill

Cara kedua adalah dengan menggunakan beberapa perintah tambahan untuk melakukan kill secara massive. Anda harus masuk ke interface command line MySQL terlebih dahulu.

Contoh querynya sebagai berikut :

select concat('KILL ',id,';') as '# kill this'
from information_schema.processlist where Command = 'Sleep' and Time > '30';

Artinya, kita akan melakukan query kill proses pada id tertentu dimana variabel yang dicari adalah query dengan tipe Sleep dengan waktu lebih dari 30 detik. Ketika perintah tersebut dijalankan, otomatis query dengan status Sleep dan lebih dari 30 detik akan di kill secara bersamaan langsung di saat yang sama.

Sumber yang cukup bisa diandalkan yang saya temukan adalah blog lukems ini. Anda bisa cekidot langsung untuk lebih detailnya.