Ich injiziere einen Stresstest in meine Webanwendung, die eine Verbindung zu einem MySQL-Server herstellt, und ich überwache die show processlist von mysql.Mysql show Prozessliste listet viele Prozesse Schlaf und info = null?
Wenn die Last hoch ist (hohe Swap-i/o) ich viele Prozesse wie das bekommen:
| 97535 | db| localhost | userA | Sleep | 515 | | NULL
| 97536 | db| localhost | userA | Sleep | 516 | | NULL
| 97786 | db| localhost | userA | Sleep | 343 | | NULL
| 97889 | db| localhost | userA | Sleep | 310 | | NULL
Aber ich kann nicht verstehen, warum sie immer noch da und werden nicht getötet? Dies führt schließlich dazu, dass meine App alle max_connections verwendet und eingehende Anfragen abbricht ...
Irgendeine Idee was sind diese Prozesse und was machen sie da :)?
Gibt es eine mysql Timeout-Variable, die ich anpassen kann, um dies zu vermeiden? – AlfaTeK
Sie können wait_timeout auf etwas kleineres setzen (http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_wait_timeout) oder das Verbindungslimit erhöhen. Sie möchten dies jedoch auf der Anwendungsseite wirklich lösen. Das Aufhängen der Verbindung von der Datenbankseite birgt das Risiko, dass eine Verbindung gerade dann geschlossen wird, wenn die Anwendung versucht, sie zu verwenden, wodurch möglicherweise ohne Grund ein Anwendungsfehler verursacht wird. Welche Datenbankverbindungsbibliothek verwenden Sie? –
@ KeithRandall, aber wie die Null-Prozesse zu identifizieren? – Khuram