Wenn Sie den Netzwerkverkehr in und aus MySQL in Ihrer Anwendung direkt messen möchten, können Sie zwei Statusvariablen überwachen:
- Bytes_received : Die Anzahl der von allen Clients empfangenen Bytes
- Bytes_sent : Die Anzahl der an alle Clients gesendeten Bytes
GLOBALE EBENE
Mit dieser Abfrage können Sie diese für alle Sitzungen (Vergangenheit und Gegenwart) abrufen
SELECT * FROM information_schema.global_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
Dadurch erhalten Sie die Nummer für die Lebensdauer der MySQL-Instanz.
SITZUNGSSTUFE
Sie können diese für jede Sitzung mit abrufen
SELECT * FROM information_schema.session_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
Auf diese Weise erhalten Sie jeweils die Nummer für die Lebensdauer der DB-Sitzung.
Sie können GUIs verwenden, um sie über die Zeit grafisch darzustellen. Da Sie Java und Tomcat erwähnt haben, möchten Sie möglicherweise Ihre eigene Präsentation erstellen. Sie müssten die vorherigen Werte beibehalten, die aktuellen Werte abrufen, subtrahieren und dann die Durchschnittswerte nach Ihren Wünschen zeichnen oder anzeigen.
Versuche es !!!
VORBEHALT
Ich habe dies vor langer Zeit im DBA StackExchange besprochen ( MySQL: Enthält 'bytes_sent' und 'bytes_received' mysqldump-Daten? ) Alles, was einen Thread hat, wird in diesen beiden Variablen gezählt, einschließlich Interna wie das für MySQL Replication (über die IO-Thread und SQL-Thread).
Stellen Sie vor diesem Hintergrund sicher, dass Sie keine unnötigen DB-Verbindungen haben, die Lesevorgänge ausführen, und dass Sie MySQL während eines mysqldump oder eines erneuten Ladens eines mysqldump nicht überwachen. Selbst Überwachungssoftware (wie Nagios, Zabbix, MONYog, EM7 usw.) generiert bei Bytes_received
jeder Ausführung DatenverkehrSHOW GLOBAL VARIABLES;
VORSCHLAG
Da alles auf mysqld verbunden wird , die globalen Auswirkungen auf Bytes_received
und Bytes_sent
Statuswerte, können Sie Ihre Anwendung haben wollen collect die Session-Ebene Bytes_received
und Bytes_sent
kurz vor dem Lauf mysqli_close () . Anschließend können Sie einen Bericht mit diesen Zahlen erstellen. Sie können diese Summen dann von den globalen Zählungen abziehen, um zu sehen, wie viele Verwaltungsdaten angefordert werden.
Am einfachsten wäre es, die MySQL Workbench zu starten . Obwohl die ordnungsgemäße Einrichtung der Serververwaltungsfunktionen einige kleine Anstrengungen erfordern kann, werden Diagramme für die Netzwerkauslastung angezeigt, und es ist ein rundum hervorragendes Tool für die Verwaltung von MySQL-Instanzen. Eine webbasierte Lösung für die MySQL-Administration ist phpMyAdmin , die auch MySQL-Statistiken bereitstellt. Beachten Sie jedoch, dass phpMyAdmin in der Vergangenheit mehrere schwerwiegende Sicherheitslücken aufwies (z. B. die vollständige Übernahme eines Systems). Ich empfehle daher dringend, stattdessen die MySQL Workbench zu verwenden. (Tangential: wenn Sie wirklichWenn Sie phpMyAdmin verwenden möchten oder müssen, stellen Sie sicher, dass Sie ein Authentifizierungsschema vor phpMyAdmin haben. Damit böswillige Personen sogar Ihre phpMyAdmin-Anmeldung sehen können, müssen sie Ihre erste Anmeldeschicht durchlaufen. Meine Server erfordern beispielsweise eine Standardauthentifizierung über HTTPS und überprüfen den angegebenen Benutzernamen und das Kennwort anhand von PAM, bevor sie Zugriff auf die Anmeldeseite von phpMyAdmin gewähren.)
Wenn Sie auch an einer allgemeinen Statistiksammlung mit vielen hübschen Grafiken interessiert sind, ist Munin eine gute Lösung. Sie enthält auch eine Sammlung von MySQL-Überwachungs-Plugins, die jedoch zuerst konfiguriert werden müssen und für die einige Perl-Abhängigkeiten installiert werden müssen Die MySQL-Überwachungs-Plugins funktionieren (
Cache::Cache
undDBD::MySQL
gemäß den Kommentaren in den Plugin-Skripten).Denken Sie schließlich daran, dass die Abrechnung des MySQL-Datenverkehrs nur dann ein Problem darstellt, wenn sich Ihre Anwendung und Datenbank auf verschiedenen Servern befinden. localhost-Verkehr nicht gemessen (oder daher in Rechnung gestellt).
quelle