Aktive MySQL-Verbindungen pro Benutzer anzeigen


9

Ich benötige eine Abfrage, die mir die aktive oder offene Anzahl von Verbindungen zu einer bestimmten Datenbank für einen bestimmten Benutzer gibt. Ich habe stundenlang gesucht und mir bisher nichts ausgedacht. Ich bin nah dran, also hier ist, was ich versucht habe.

  1. SHOW STATUS WHERE `variable_name` = 'Threads_connected';

  2. SHOW STATUS LIKE '%onn%';

  3. SELECT * FROM information_schema.processlist WHERE USER='database_user';

Ich arbeite für ein Webhosting-Unternehmen, und einer unserer Kunden stößt immer wieder an seine max_user_connectionsGrenzen. Daher muss ich bei der Fehlerbehebung wissen, wie viele Verbindungen sein Benutzer derzeit verwendet, da er kein gemeinsam genutzter Server ist. Ich verwende derzeit MySQL (InnoDB) Version 5.5.36. Jede Hilfe wäre sehr dankbar!

Antworten:


11

Was Sie brauchen, ist eine Aufschlüsselung nach Benutzer und Hostname zusammen mit einer Summe

SELECT IFNULL(usr,'All Users') user,IFNULL(hst,'All Hosts') host,COUNT(1) Connections
FROM
(
    SELECT user usr,LEFT(host,LOCATE(':',host) - 1) hst
    FROM information_schema.processlist
    WHERE user NOT IN ('system user','root')
) A GROUP BY usr,hst WITH ROLLUP;

Dies behandelt Hostadressen mit einem Doppelpunkt zwischen Hostname und Portnummer

Ich hoffe, dass sich nicht alle als root anmelden


-1

Hierzu wurde ausführlich diskutiert: /dba//a/47160/385

Kurz gesagt, die Abfragen, die Sie benötigen, sind

SELECT max_user_connections FROM mysql.user WHERE user='db_user' AND host='localhost';

und

SHOW VARIABLES LIKE 'max_user_connections';

AKTUALISIEREN

Möglicherweise ist dies keine direkte Antwort auf Ihre Frage, aber laut http://dev.mysql.com/doc/refman/5.5/en/user-resources.html können Sie mit MySQL die Anzahl der Zugriffe pro Stunde begrenzen . Vielleicht beantwortet dies, warum ein bestimmter Benutzer das Limit erreicht, während die Anzahl der Verbindungen gemäß der Prozessliste gering ist. Leider kann ich keine Referenz finden, wie ich den Zugangszähler bekomme.


Ich möchte die Anzahl der max_user_connections nicht ändern oder die max_user_connections anzeigen. Ich weiß, wie das geht. Ich möchte sehen, wie viele dieser Verbindungen ein bestimmter Benutzer aktiv hat.
Will Hughes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.