Wie lange kann MySQL Connections nicht schlafen?

38

Ich habe mich auf meinem Server angemeldet, um den Status der Datenbank zu überprüfen, und festgestellt, SHOW PROCESSLIST;dass eine große Anzahl von Verbindungen inaktiv ist, die sehr alt sind.

Bildbeschreibung hier eingeben Wie lang sollte die Verbindungszeit sein, bevor die Verbindung getrennt wird?

Wie setze ich das Zeitlimit in MySQL 5.0.51a-3ubuntu5.4?

Hinweis:

Ich benutze PHP 5.2.x und Symfony Framework 1.2.

Patrick
quelle
Ein ausführliches Blog: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi

Antworten:

53

mysqld Das Zeitlimit für Datenbankverbindungen wird auf der Grundlage von zwei Serveroptionen festgelegt:

Beide sind standardmäßig 28.800 Sekunden (8 Stunden).

Sie können diese Optionen in einstellen /etc/my.cnf

Wenn Ihre Verbindungen bestehen bleiben (geöffnet über mysql_pconnect), können Sie diese Zahlen auf 600 (10 Minuten) oder sogar 60 (1 Minute) senken. Wenn Ihre App einwandfrei funktioniert, können Sie die Standardeinstellung beibehalten. Es liegt an dir.

Sie müssen diese wie folgt einstellen my.cnf(wird nach einem mysqldNeustart wirksam ):

[mysqld]
interactive_timeout=180
wait_timeout=180

Wenn Sie mysql nicht neu starten möchten, führen Sie diese beiden Befehle aus:

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

Dadurch werden die bereits geöffneten Verbindungen nicht geschlossen. Dadurch werden neue Verbindungen in 180 Sekunden geschlossen.

RolandoMySQLDBA
quelle
also in /etc/my.cnf würde ich einfach setzen wait_timeout=180?
Patrick
@Patrick Ja, aber Sie müssen sowohl interactive_timeout als auch wait_timeout auf 180 setzen. Ich habe meine Antwort für Ihre Antwort aktualisiert.
RolandoMySQLDBA
Diese Datei kann an anderer Stelle sein dev.mysql.com/doc/refman/5.1/de/option-files.html und diese Optionen können nicht erklärt werden (schreibe sie selbst)
nicolallias