2016-07-07 11 views
2

Ich habe ein Shell-Skript, um einige Abfragen in MySQL-Datenbank auszuführen und die Ergebnisse zu verarbeiten und E-Mails entsprechend zu senden. Das Skript wird alle 15 Minuten 24x7 ausgeführt. Innerhalb des Shell-Skript anschließe ich einfach an die DB mit dem Befehl ‚mysql -uusername Ppassword Datenbank -s N -eZu viele Datenbankverbindungen mysql

Alles, was ich‚Einige Abfrage hier geht‘wissen wollen, ist, dass dies tut script muss etwas mit dem db verbindungsleck machen, da ich dieses skript für immer ausführe. Wenn ich die folgende Abfrage ausführen, kann ich sehen, dass jedes Mal, wenn der Connections-Wert um eins alle 15 Minuten erhöht wird. Status wie '% Con%' anzeigen;

+----------------------------------------+-------+ 
| Variable_name       | Value | 
+----------------------------------------+-------+ 
| Aborted_connects      | 4  | 
| Com_show_contributors     | 0  | 
| Connections       | 804 | 
| Max_used_connections     | 152 | 
| Performance_schema_cond_classes_lost | 0  | 
| Performance_schema_cond_instances_lost | 0  | 
| Ssl_client_connects     | 0  | 
| Ssl_connect_renegotiates    | 0  | 
| Ssl_finished_connects     | 0  | 
| Threads_connected      | 14 | 
+----------------------------------------+-------+ 

Stürzt es zu einem bestimmten Zeitpunkt ab ?. Weil der Wert nie herunterkommt. Ich weiß, dass der Wert die Gesamtzahl der Verbindungen angibt, die für die Datenbank vorhanden sind. Max_used_connections bleibt jedoch gleich. Oder gibt es eine Möglichkeit, die DB-Verbindung von Shell-Skript zu schließen?

+5

Sie müssen die einzelnen Verbindungen ordnungsgemäß schließen – JYoThI

+2

Sie können die Verwendung von MySQL-Ereignissen in Betracht ziehen, um zu verhindern, dass Verbindungen aufgebaut werden. Lesen Sie dies. https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html –

Antwort

4

Wie MySQL-Dokumentation auf den connections server status variable sagt:

Die Anzahl der Verbindungsversuche (erfolgreich oder nicht) mit dem MySQL-Server.

Dies ist eine statistische Zahl, die die Anzahl der Verbindungsversuche seit dem letzten Neustart des MySQL-Servers zeigt.

Die threads_connected status variable zeigt die Anzahl der derzeit offenen Verbindungen (14 in Ihrem Fall). Wenn diese Statusvariable gleich max_connections server SYSTEM variable ist, erhalten Sie zu viele Verbindungsfehlermeldungen.

+0

** Die Anzahl der Verbindungsversuche (erfolgreich oder nicht) zum MySQL-Server ** - Gibt es ein Limit? . Und ** threads_connected ** Variable hat nichts mit dem Skript zu tun, oder? Danke für die Antwort, ich werde die Dokumentation, auf die Sie hingewiesen haben, überprüfen. – Raj

+0

Es ist nur eine statistische Zahl, es wird einfach überlaufen (neu starten), wenn das Maximum erreicht ist. Die verknüpfte MySQL-Dokumentation teilt Ihnen jedoch den Datentyp der Variablen mit, der ihr Limit angibt. – Shadow

+0

Threads_connected listet alle derzeit geöffneten Verbindungen auf. Wenn Sie während der Skriptausführung die Abfrage 'show variables' ausführen, enthält die Variable threads_connected die vom Befehlszeilenclient vorgenommene Verbindung. – Shadow

Verwandte Themen