Jumat, 10 Januari 2014

PHP MySQL "too many connections"

Suatu saat saya mengalami error koneksi dari PHP ke database MySQL dengan status error "too many connections". Setelah mencari di internet ternyata maksimal koneksi ke database MySQL adalah masalahnya. Yaitu pada variable "max_connections". Untuk melihat max_connections ketikkan perintah dibawah pada MySQL Manager/console MySQL :
show variables like "max_connections";
 
Maka Akan tampil isi :

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

Secara Default MySQL yang saya cek memiliki 151 koneksi maksimal.
Untuk merubah maksimak koneksi ketikkan perintah :
set global max_connections = jumlah_koneksi;
contoh : set global max_connections = 300;

Perintah diatas akan merubah maksimal koneksi tapi akan kembali berubah apabila MySQL di restart.
Supaya setting tidak berubah apabila MySQL berubah, edit file my.cnf , biasanya pada linux terdapat di /etc/my.cnf; .
Dibawah [mysqld] tambahkan:
max_connections = jumlah_koneksi; 
contoh : max_connections = 300


Catatan : Setting max_connections harus disesuaikan dengan besarnya memori yang digunakan oleh server. Jika terlalu besar dan memori kecil maka akan bermasalah. Sebenarnya ada perhitungan untuk menentukan settingan, tapi saya masih belum mengerti, jadi saya harus memperdalam lagi.

Selain  max_connection harus diatur juga wait_timeout /diturunkan.

Untuk melihat wait_timeout ketikkan perintah dibawah pada MySQL Manager/console MySQL :
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
Maka Akan tampil isi :
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| wait_timeout    | 28800 |
+-----------------+-------+

Untuk merubah wait_timeout ketikkan perintah :
SET GLOBAL wait_timeout = jumlah_koneksi;
contoh : SET GLOBAL wait_timeout = 180;

atau di my.cnf dibawah [mysqld] tambahkan:
wait_timeout=180

Tidak ada komentar: