Heim Themen php mysql Ausführliche Erklärung zur Verbesserung der Leistung von PHP/MySQL durch ProxySQL

Ausführliche Erklärung zur Verbesserung der Leistung von PHP/MySQL durch ProxySQL

Nov 17, 2020 pm 04:50 PM

Die Spalte

php mysql stellt vor, wie ProxySQL die Leistung von PHP/MySQL verbessert.

Ausführliche Erklärung zur Verbesserung der Leistung von PHP/MySQL durch ProxySQL

Vor ein paar Tagen habe ich vorgestellt, wie man den Redis-Verbindungspool über Twemproxy implementiert, um die Leistung von PHP/Redis zu verbessern. Heute möchte ich ProxySQL vorstellen, mit dem MySQL-Verbindungspools implementiert werden können, wodurch die Leistung von PHP/MySQL verbessert wird. Es besteht keine Notwendigkeit, einen weiteren Artikel dazu zu schreiben Bei der Konfiguration und Verwendung von ProxySQL bin ich auf einige kleinere Probleme gestoßen, die ich aufzeichnen sollte.

Zum Installationsprozess gibt es eine detaillierte Beschreibung im offiziellen Wiki. Schauen Sie sich hauptsächlich die Konfigurationsdatei /etc/proxysql.cnf an:

datadir="/var/lib/proxysql"

admin_variables=
{
	admin_credentials="admin:admin"
	mysql_ifaces="0.0.0.0:6032"
}

mysql_variables=
{
	threads=4
	max_connections=2048
	default_query_delay=0
	default_query_timeout=36000000
	have_compress=true
	poll_timeout=2000
	interfaces="/var/run/proxysql.sock"
	default_schema="information_schema"
	stacksize=1048576
	server_version="5.5.30"
	connect_timeout_server=3000
	monitor_username="monitor"
	monitor_password="monitor"
	monitor_history=600000
	monitor_connect_interval=60000
	monitor_ping_interval=10000
	monitor_read_only_interval=1500
	monitor_read_only_timeout=500
	ping_interval_server_msec=120000
	ping_timeout_server=500
	commands_stats=true
	sessions_sort=true
	connect_retries_on_failure=10
}

mysql_servers =
(
	{
		address="..."
		port=3306
	}
)

mysql_users:
(
	{
		username = "..."
		password = "..."
	}
)
Nach dem Login kopieren

Das Wichtigste ist, dass ProxySQL SQLite zum Speichern von Konfigurationsinformationen verwendet Konfigurationen werden von SQLite bezogen. Wenn Sie die Verwendung einer Konfigurationsdatei erzwingen möchten, müssen Sie den anfänglichen Befehl verwenden. Weitere Informationen finden Sie unter: Ausführliche Erläuterung der Installation und Konfiguration von ProxySQL. Darüber hinaus sind einige kleine Details zu beachten:

Achten Sie zunächst auf admin_credentials in admin_variables. Der Standardwert ist „admin:admin“, was bedeutet, dass der Standardbenutzername und das Standardkennwort sowohl admin als auch mysql_ifaces sind. Der Standardwert „0.0.0.0:6032“ bedeutet, dass der Port 6032 aller Netzwerkschnittstellen überwacht wird. Stellen Sie sich vor, Sie verfügen über eine Netzwerkschnittstelle, auf die das externe Netzwerk zugreifen kann. Dann können böswillige Benutzer den Standardbenutzernamen und das Standardkennwort verwenden Um Ihr Admin-System aufzurufen, verwenden Sie daher nicht den Standardbenutzernamen und das Standardkennwort und lauschen Sie nicht standardmäßig auf die externe Netzwerkschnittstelle. Denken Sie daran! Erinnern! Erinnern!

Achten Sie zweitens auf die Schnittstellen in mysql_variables, da PHP den ProxySQL-Verbindungspool über den lokalen Unix-Domänen-Socket anfordern muss. Daher sollten die Schnittstellen nicht das ip:port-Formular verwenden, sondern es auf das lokale Unix-Domänen-Socket-Formular festlegen . In diesem Beispiel sollte man sich daran erinnern, dass viele Leute gerne Socket-Dateien unter dem /tmp-Pfad ablegen Gute Frau vom Namen her. Ich möchte es zweimal machen, aber wer kann es falsch machen? Nach rm ist es schlimm.

Achten Sie abschließend auf „monitor_username“ und „monitor_password“ in mysql_variables, die die relevanten Informationen des Überwachungsbenutzers festlegen, damit ProxySQL den Status des Back-End-MySQL-Servers verfolgen kann. Denken Sie daran, das entsprechende Konto auf dem zu erstellen Ich habe den Back-End-MySQL-Server im Voraus gestartet. Das Ergebnis ist, dass ProxySQL nach einer Weile nicht mehr reagiert. Dies liegt daran, dass ProxySQL weiterhin versucht, auf das Überwachungskonto und das Kennwort zuzugreifen Auf dem Back-End-Server werden viele Meldungen „Zugriff verweigert“ generiert. für Benutzer 'monitor'@'...'" Fehler, wenn ein bestimmter Schwellenwert erreicht wird, führt dies dazu, dass „Host '...' aufgrund vieler Verbindungsfehler blockiert" wird. Zu diesem Zeitpunkt ist ProxySQL nicht dazu in der Lage Beantworten Sie die Anfrage. Sie müssen „mysqladmin“ auf MySQL verwenden. Relevante Protokollinformationen können in „SELECT * FROM monitor.mysql_server_ping_log“ eingesehen werden.

Lassen Sie uns einen Stresstest durchführen, um zu sehen, wie die Leistung ist:

<?php

$host = &#39;...&#39;;
$user = &#39;...&#39;;
$password = &#39;...&#39;;
$database = &#39;...&#39;;
$charset = &#39;utf8mb4&#39;;
$socket = &#39;/var/run/proxysql.sock&#39;;

$dsn = "mysql:dbname={$database};charset={$charset}";

if (empty($_GET[&#39;proxysql&#39;])) {
    $dsn .= ";host={$host}";
} else {
    $dsn .= &#39;;unix_socket={$socket}&#39;;
}

$dbh = new PDO($dsn, $user, $password);

$sql = &#39;SELECT * FROM foo LIMIT 10&#39;;

$value = $dbh->query($sql);

foreach ($value as $v) {
    var_dump($v);
}

?>
Nach dem Login kopieren
Simulieren Sie ein Szenario mit hoher Parallelität über ab und testen Sie, ob sich die Leistung verbessert hat:

shell> ab -k -n 10000 -c 100 "http://path/test.php?proxysql=0"
shell> ab -k -n 10000 -c 100 "http://path/test.php?proxysql=1"
Nach dem Login kopieren
Schließlich befinde ich mich auf einem allgemein konfigurierten Server. Ohne ProxySQL werden ungefähr 1.500 RPS und mit ProxySQL ungefähr 2.000 RPS erzielt. Mit anderen Worten: ProxySQL bringt eine Leistungsverbesserung von 25 %.

Wenn Sie weitere verwandte Artikel erfahren möchten, achten Sie bitte auf die Spalte php mysql!

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verbesserung der Leistung von PHP/MySQL durch ProxySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)