Quanto tempo è "troppo lungo" per consentire a MySQL Connections di dormire?


38

Ho effettuato l'accesso al mio server per verificare lo stato del database e ho notato SHOW PROCESSLIST;che esiste un numero elevato di connessioni in sospensione che sono molto vecchie.

inserisci qui la descrizione dell'immagine Quale durata deve essere il limite di tempo della connessione prima che la connessione venga interrotta?

Come posso impostare il limite di tempo in MySQL 5.0.51a-3ubuntu5.4?

Nota:

Sto usando PHP 5.2.xe symfony framework 1.2.


Risposte:


53

mysqld eseguirà il timeout delle connessioni al database in base a due opzioni del server:

Entrambi sono 28.800 secondi (8 ore) per impostazione predefinita.

È possibile impostare queste opzioni in /etc/my.cnf

Se le connessioni sono persistenti (aperte tramite mysql_pconnect), è possibile ridurre questi numeri a un valore ragionevole come 600 (10 minuti) o addirittura 60 (1 minuto). Oppure, se la tua app funziona bene, puoi lasciare l'impostazione predefinita. Questo lo devi decidere tu.

È necessario impostarli come segue in my.cnf( mysqlddiventa effettivo dopo il riavvio):

[mysqld]
interactive_timeout=180
wait_timeout=180

Se non si desidera riavviare mysql, eseguire questi due comandi:

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

Questo non chiuderà le connessioni già aperte. Ciò causerà la chiusura di nuove connessioni in 180 secondi.


quindi in /etc/my.cnf vorrei solo mettere wait_timeout=180?
Patrick

@Patrick Sì, ma devi impostare sia Interactive_timeout che wait_timeout su 180. Ho aggiornato la mia risposta per la tua risposta.
RolandoMySQLDBA

Questo file può essere altrove dev.mysql.com/doc/refman/5.1/en/option-files.html e queste opzioni potrebbero non essere esplicitate (scriverle da soli)
nicolallias,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.