webentwicklung-frage-antwort-db.com.de

Wie kann ich sehen, wie viele MySQL-Verbindungen geöffnet sind?

Wie kann ich sehen, wie viele Verbindungen während der aktuellen Anforderung über mysql_connect in PHP geöffnet wurden, der auf Apache ausgeführt wird?

Ich weiß, dass ich, wenn ich die mysql_connect-Funktion 100 Mal mit denselben Parametern aufrief, immer dieselbe Verbindungsverbindung zurückgibt. Es wird keine neue Verbindung hergestellt, wenn die Verbindung bereits besteht.

Aber ich möchte nur sicherstellen, dass mysql_connect keinen neuen startet.

Ich arbeite mit einem Altsystem, das viele mysql_connect Funktionsaufrufe enthält.

Gibt es eine Einstellung in Apache oder gibt es eine Möglichkeit, diese Anzahl von Verbindungen in der Apache- oder MySQL-Protokolldatei zu protokollieren?

34
Sahal

Ich denke, es gibt mehrere Möglichkeiten:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

oder Sie können einen SHOW PROCESSLIST ausführen und in der Spalte Id eindeutige Werte ermitteln. In der alten PHP API mysql gibt es die mysql_list_processes - Funktion, die dasselbe wie SHOW PROCESSLIST tut.

Aber zuerst sollte man für Sie arbeiten. Vielleicht möchten Sie auch nach anderen STATUS-Variablen suchen

47
Abhay

Es gibt andere nützliche Variablen für Verbindungen, und in Ihrem speziellen Fall kann die Variable Connections helfen, herauszufinden, ob Ihr Code zu viele Verbindungen herstellt. Überprüfen Sie den Wert vor und nach dem Ausführen des Codes.

# mysql -e 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"'

+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Connections       | 22742 |
| Threads_cached    | 1     |
| Threads_connected | 87    |
| Threads_created   | 549   |
| Threads_running   | 51    |
+-------------------+-------+
  • Verbindungen

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

  • Threads_cached

    Die Anzahl der Threads im Thread-Cache.

  • Threads_connected

    Die Anzahl der aktuell offenen Verbindungen.

  • Threads_created

    Die Anzahl der für die Verarbeitung von Verbindungen erstellten Threads. Wenn Threads_created groß ist, sollten Sie den Wert für thread_cache_size erhöhen. Die Cachefehlerrate kann als Threads_created/Connections berechnet werden.

  • Threads_running

    Die Anzahl der Threads, die nicht schlafen. 

32
Kamil Dziedzic

Aktueller Verbindungsstatus:

mysqladmin status

Schau dir Threads: an. Weitere Informationen zu aktuellen Verbindungen erhalten Sie mit den Befehlen:

[email protected]:~$ mysqladmin -uroot -ppass extended-status | grep Threads
| Threads_cached                           | 0           |
| Threads_connected                        | 3           |
| Threads_created                          | 3           |
| Threads_running                          | 1           |

[email protected]:~$ mysqladmin -uroot -ppass processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host      | db | Command | Time | State | Info             |
+----+------+-----------+----+---------+------+-------+------------------+
| 53 | root | localhost |    | Sleep   | 258  |       |                  |
| 54 | root | localhost |    | Sleep   | 253  |       |                  |
| 58 | root | localhost |    | Query   | 0    |       | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+

FYImysqladmin -v -uroot -ppass processlist ist analog zu show full processlist.

Befehle können auf ein beliebiges eindeutiges Präfix gekürzt und gleichzeitig aufgerufen werden:

[email protected]:~$ mysqladmin -v -uroot -ppass proc stat
+----+------+-----------+----+---------+------+-------+-----------------------+
| Id | User | Host      | db | Command | Time | State | Info                  |
+----+------+-----------+----+---------+------+-------+-----------------------+
| 53 | root | localhost |    | Sleep   | 951  |       |                       |
| 54 | root | localhost |    | Sleep   | 946  |       |                       |
| 65 | root | localhost |    | Query   | 0    |       | show full processlist |
+----+------+-----------+----+---------+------+-------+-----------------------+
Uptime: 1675  Threads: 3  Questions: 171  Slow queries: 0  Opens: 235  
Flush tables: 1  Open tables: 57  Queries per second avg: 0.102
9

Sie können den MySQL-Befehl show processlist verwenden, um die Anzahl der Verbindungen abzurufen.

3
gmhk

Ich glaube nicht, dass Sie die Anzahl der Verbindungen sehen können, aber die Verbindungen zum MySQL-Server beschränken können.

0
X10nD