getrennte MySQL-Server und Webserver und Konsequenzen

getrennte MySQL-Server und Webserver und Konsequenzen

Ich habe eine Webanwendung. Habe dafür einen ziemlich leistungsstarken Server gekauft. Die Serverspezifikationen sind unten aufgeführt: CPU: DUAL E5-2620 RAM: 32 GB DDR3 HDD: 2 x 300 GB SAS 10K Netzwerk: 100 Mbit/s/10 TB Internet.

WebServer-Spezifikation: Apache/nginx/PHP Datenbank: MySQL

Jetzt werden meine Benutzer von Tag zu Tag mehr. Mein Server hält diesen Druck nicht aus und die Wartezeiten werden immer länger. Also habe ich darüber nachgedacht, MySQL und den Webserver auf zwei identische Server aufzuteilen, um die CPU-Last auszugleichen. Jetzt habe ich herausgefunden, dass ich mit der Trennung von MySQL und PHP weitere der unten aufgeführten Probleme haben werde!

  • Warte auf Netzwerkübertragung: Ich habe diese MySQL-Abfrage: „SELECT * FROM table“, wenn die Tabelle mehr als 500 MB Daten enthält. Bei meiner Verbindungsgeschwindigkeit dauert es mehrere Sekunden, um eine solche Tabelle über das Netzwerk zu übertragen. Und das gilt nur für einen Benutzer mit einer Verbindung, aber es multipliziert sich mit 10 Verbindungen von einem Benutzer und mehr als 100 Online-Benutzern.

Das obige Beispiel ist nur ein Beispiel, aber echte Daten zeigen die folgenden Informationen für 100 gleichzeitig online befindliche Benutzer:

Verkehr + ø + pro Stunde

Erhalten+ 14,7 GiB + 201,4 MiB

Gesendet+ 429,4 GiB + 5,7 GiB

Gesamt+ 444,2 GiB + 5,9 GiB


Es scheint also, dass eine Trennung für meine Webanwendung unmöglich ist. Jetzt weiß ich nicht, wie ich die Last auf diese beiden Server verteilen soll, ohne dass es zu so einem großen Problem kommt. Was kann es für eine alternative Möglichkeit geben, meine CPU-Last auszugleichen, ohne dass es zu Latenzproblemen kommt (zumindest mit weniger Problemen)?

*****Hinweis: Die Abfrage ist ein Beispiel. Meine Abfragen sind ausreichend optimiert, aber meine Anwendung ist viel komplizierter und interagiert daher stark mit der Datenbank. Aber die MySQL-Informationen zeigen, dass immer noch 6 GiB Daten übertragen wurden.

Antwort1

Wenn Sie die Webanwendung so optimieren, dass sie keine lächerlich ineffizienten SQL-Abfragen verwendet, können Sie beide wahrscheinlich wieder auf derselben Maschine ausführen und dabei viel weniger Last verursachen. Es gibt keinen Grund, warum jeder Benutzer jedes Mal die gesamte Tabelle lesen sollte. Richtige Abfragen und Indizes werden hier wahrscheinlich einen enormen Schub bringen – weit mehr, als einfach mehr Hardware dafür einzusetzen.

Andernfalls stellen sie jetzt Ethernet-Adapter mit mindestens 10 Gb/s her. Für einige der exotischeren Typen sind sie sogar noch schneller. Eine schnellere Verbindung zwischen den Servern wird helfen. Aber nicht so sehr wie richtige SQL-Abfragen.

verwandte Informationen