Berapa lama "terlalu lama" untuk Koneksi MySQL untuk tidur?

38

Saya masuk ke server saya untuk memeriksa status database dan memperhatikan SHOW PROCESSLIST;bahwa ada sejumlah besar koneksi yang sudah sangat tua.

masukkan deskripsi gambar di sini Berapa lama batas waktu koneksi sebelum koneksi harus dimatikan?

Bagaimana cara menetapkan batas waktu di MySQL 5.0.51a-3ubuntu5.4?

catatan:

Saya menggunakan PHP 5.2.x dan framework symfony 1.2.

Patrick
sumber

Jawaban:

53

mysqld akan menghentikan koneksi basis data berdasarkan dua opsi server:

Keduanya secara default 28.800 detik (8 jam).

Anda dapat mengatur opsi ini di /etc/my.cnf

Jika koneksi Anda persisten (dibuka melalui mysql_pconnect), Anda dapat menurunkan angka-angka ini ke sesuatu yang masuk akal seperti 600 (10 menit) atau bahkan 60 (1 menit). Atau, jika aplikasi Anda berfungsi dengan baik, Anda dapat membiarkan default. Ini terserah kamu.

Anda harus mengatur ini sebagai berikut dalam my.cnf(berlaku setelah mysqlddimulai ulang):

[mysqld]
interactive_timeout=180
wait_timeout=180

Jika Anda tidak ingin me-restart mysql, maka jalankan dua perintah ini:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

Ini tidak akan menutup koneksi yang sudah terbuka. Ini akan menyebabkan koneksi baru ditutup dalam 180 detik.

RolandoMySQLDBA
sumber
jadi di /etc/my.cnf saya hanya akan memasukkan wait_timeout=180?
Patrick
@Patrick Ya, tetapi Anda perlu mengatur interactive_timeout dan wait_timeout menjadi 180. Saya memperbarui jawaban saya untuk respons Anda.
RolandoMySQLDBA
File ini dapat di tempat lain dev.mysql.com/doc/refman/5.1/en/option-files.html dan opsi ini mungkin tidak dapat dijelaskan (tulis sendiri)
nicolallias