Selasa, 17 Desember 2013

Mencegah CPU Overload

Beberapa waktu yang lalu saya pernah kena suspend provider VPS karena pemakaian resource CPU berlebihan di akun VPS saya yang mengakibatkan semua akun yang berada pada node yang sama mengalami down. Setelah saya periksa, ternyata penyebabnya adalah proses-proses yang berhubungan dengan web yaitu nginx, mysql dan php5-fpm mengkonsumsi banyak resource CPU ketika terjadi lonjakan pengunjung. Biasanya ini terjadi setelah ada orang yang share link di facebook, tentu saja orang tersebut adalah "artis" di dunia FB dengan friends dan follower yang mencapai ribuan.

Adalah cpulimit, sebuah software open source ukuran kecil, memiliki kemampuan untuk membatasi proses pada level tertentu. Misalnya, proses nginx bisa dibatasi agar pemakaian CPU tidak lebih dari 30%. Ok, mari kita mulai dengan instalasi cpulimit di Debian.

Instalasi cpulimit di Debian sangat mudah. Sebagai root, ketikkan:
#apt-get install cpulimit
Selesai :D

cpulimit harus dijalankan terus-menerus selama Anda ingin membatasi pemakaian resource CPU. Contoh penggunaan:
cpulimit -e nginx -l 40 -b
cpulimit -e mysqld -l 40 -b
cpulimit -e php5-fpm -l 40 -b
Perintah di atas membatasi pemakaian CPU pada proses nginx, mysqld dan php5-fpm pada level 40% dan cpulimit berjalan di background. Anda perlu mengaktifkan perintah di atas pada saat booting dengan menambahkannya (copy&paste) pada file /etc/rc.local.

Pantau kinerja cpulimit melalui perintah #top.