Aktueller Standort: Startseite> Neueste Artikel> Connect_errno kann Connect_errno helfen, festzustellen, dass die Datenbanklast zu hoch ist? Detaillierte Erläuterung der Erkennungsmethode

Connect_errno kann Connect_errno helfen, festzustellen, dass die Datenbanklast zu hoch ist? Detaillierte Erläuterung der Erkennungsmethode

M66 2025-07-10

1. Was ist Connect_errno?

In PHP ist Connect_errno eine Eigenschaft, die von der MySQLI -Erweiterung bereitgestellt wird, die die Anzahl der Fehler erhält, die bei der Verbindung zu einer MySQL -Datenbank auftreten. Wenn wir MySQLI_Connect () oder MySQLi :: __ Construct () nennen, um eine Datenbankverbindung herzustellen, weist Connect_errno den Wert automatisch zu. Wenn die Verbindung erfolgreich ist, beträgt der Wert von Connect_errno 0; Wenn ein Verbindungsfehler auftritt, gibt Connect_errno den entsprechenden Fehlercode zurück.

Beispielcode:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Stellen Sie erfolgreich eine Verbindung zur Datenbank her!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Wenn die Datenbankverbindung im obigen Code erfolgreich ist, beträgt $ mysqli-> connect_errno 0. Wenn die Verbindung ausfällt, gibt $ mysqli-> connect_errno den spezifischen Fehlercode zurück.


2. Laden Sie Connect_errno und Datenbank.

Es ist zu beachten, dass Connect_errno nur Informationen liefert, wenn Probleme während des Datenbankverbindungsprozesses auftreten, beispielsweise:

  • Der Datenbankserver ist nicht erreichbar

  • Falscher Benutzername oder Passwort

  • Die Datenbank existiert nicht

Connect_errno hilft uns jedoch nicht direkt, zu bestimmen, ob die Datenbanklast zu hoch ist. Die Last einer Datenbank zeigt sich normalerweise als langsame Reaktionszeit, Erschöpfung von Verbindungspools oder übermäßige Serverressourcen (z. B. CPU, Speicher). Diese Fälle können nicht von Connect_errno erkannt werden.


3. Wie man die Datenbanklast überwacht?

Um die Last der Datenbank zu überwachen, müssen wir andere Mittel verwenden, z. B.:

3.1 Leistungsmetriken für die Verwendung von MySQL

MySQL bietet einige Systemvariablen und -befehle, mit denen wir den Laststatus der Datenbank überwachen können:

  • Status anzeigen : Dieser Befehl kann den laufenden Status von MySQL einschließlich der Anzahl der Verbindungen, Abfragezeiten, langsamer Abfrage usw. anzeigen.

  • Variablen anzeigen : Überprüfen Sie die Parameter der MySQL -Konfiguration, einschließlich der maximalen Anzahl von Verbindungen, Speicherverbrauch usw.

  • ProcessList anzeigen : Zeigt die aktuell ausführende Abfrage an, die uns helfen kann, festzustellen, ob es langlebige Abfragen gibt, die übermäßige Systemlast verursachen.

 <span><span><span class="hljs-keyword">SHOW</span></span><span> STATUS </span><span><span class="hljs-keyword">LIKE</span></span><span> </span><span><span class="hljs-string">'Threads_connected'</span></span><span>;
</span><span><span class="hljs-keyword">SHOW</span></span><span> STATUS </span><span><span class="hljs-keyword">LIKE</span></span><span> </span><span><span class="hljs-string">'Questions'</span></span><span>;
</span><span><span class="hljs-keyword">SHOW</span></span><span> PROCESSLIST;
</span></span>

Diese Befehle können uns helfen, die Anzahl der Datenbankverbindungen und Abfragebedingungen in Echtzeit zu überwachen und so zu bestimmen, ob die Datenbank überlastet ist.

3.2 Verwenden von Überwachungstools

Verwenden Sie professionelle Datenbanküberwachungstools wie Prometheus , Grafana , Percona Überwachung und Verwaltung (PMM) , um den Laststatus der Datenbank eingehender zu analysieren. Diese Tools können detaillierte Diagramme und Alarmfunktionen bereitstellen, sodass Sie wissen, wann die Datenbanklast zu hoch ist, und rechtzeitig Maßnahmen ergreifen.

3.3 Datenbank langsames Abfrageprotokoll

Das Aktivieren von langsamen Abfrageprotokollen kann uns dabei helfen, zu ermitteln, welche Abfragen viel Zeit verbrauchen, was zu Überladung der Datenbank führen kann. Sie können langsame Abfrageprotokolle mit der folgenden MySQL -Konfiguration aktivieren:

 <span><span><span class="hljs-keyword">SET</span></span><span> </span><span><span class="hljs-keyword">GLOBAL</span></span><span> slow_query_log </span><span><span class="hljs-operator">=</span></span><span> </span><span><span class="hljs-string">'ON'</span></span><span>;
</span><span><span class="hljs-keyword">SET</span></span><span> </span><span><span class="hljs-keyword">GLOBAL</span></span><span> long_query_time </span><span><span class="hljs-operator">=</span></span><span> </span><span><span class="hljs-number">2</span></span><span>; </span><span><span class="hljs-comment">-- Setzen Sie die Abfrage überschreiten 2 Die Abfrage in Sekunden ist eine langsame Frage</span></span><span>
</span></span>

Langsame Abfrageprotokolle können Ihnen dabei helfen, weniger effiziente Abfragen in der Datenbank zu ermitteln, wodurch diese Abfragen oder Datenbankstrukturen optimiert und die Datenbanklast reduziert werden.


4. Wie kann man mit übermäßiger Datenbanklast umgehen?

Wenn die Überwachung feststellt, dass die Datenbanklast zu hoch ist, können die folgenden Methoden angenommen werden, um das Problem zu optimieren und zu lösen:

4.1 Optimierungsabfrage

Stellen Sie die Effizienz von Abfrageanweisungen sicher, indem Sie langsame Abfrageprotokolle analysieren, komplexe und zeitaufwändige SQL-Abfragen optimieren. Verwenden Sie beispielsweise entsprechende Indizes, um die volle Tabelle zu scannen und Paging -Abfragen zu verwenden, um die Datenmenge pro Abfrage zu reduzieren.

4.2 Datenbankverbindungspool hinzufügen

Wenn die Anzahl der Datenbankverbindungen der Grund für die hohe Last ist, können Sie in Betracht ziehen, die Größe des Datenbankverbindungspools zu erhöhen, um den Verbindungsaufwand bei jedem Anfordern der Datenbank zu reduzieren.

4.3 Lastausgleich

Bei hoher Parallelität können Anfragen und Schreibanforderungen an verschiedene Datenbankserver durch Lese- und Schreibtrennung der Datenbank zugewiesen werden, wodurch die Last auf einem einzelnen Datenbankserver verringert wird.

4.4 Datenbank Horizontale Aufteilung

Für sehr große Datenbanken können Sie die horizontale Aufteilung der Datenbank in Betracht ziehen, die Daten in mehrere Datenbankinstanzen verteilen und die Last weiter teilen.