Auswahl eines Webserver-Betriebsmodus basierend auf persönlichen Erfahrungen

Dieser Artikel ist nützlich für Personen, die bereits eine eigene Website haben oder diese öffnen möchten. Besonders interessanter Artikel werden ambitionierte Webmaster sein, die der Meinung sind, dass die schönste Stunde ihres Projekts gleich um die Ecke ist und sich auf den Zustrom von Seitenbesuchern vorbereiten möchten.

Selbst diejenigen, die immer noch nur von Tausenden von Benutzern auf ihrer Website träumen, haben sich wahrscheinlich gefragt: "Wie viele Benutzer wird meine Website haben, wenn sie sich gleichzeitig anmelden?" Ich erinnere mich sofort an den bekannten Ausdruck „Habraeffect“ - das Phänomen des Site-Versagens, das sich nach dem Erscheinen des Links im Internet als nicht bereit für zahlreiche Konvertierungen herausstellte.

Angenommen, die Site existiert bereits (oder wird es bald sein): Wo kann sie sich befinden? Sollte es ein klassischer Hosting- oder VPS-Server sein? Wenn vps, welches und wie ist es besser, es zu konfigurieren? Oder gibt es überhaupt keinen Unterschied und es ist einfacher zu wählen, was billiger ist? In diesem Artikel werden wir verschiedene Optionen betrachten und in der Praxis sicherstellen, welche für unsere Website am besten geeignet ist.

Wir werden experimentieren: verschiedene Server-Betriebsmodi einstellen und die Leistung messen. Wir werden die Belastung der Website mithilfe des Dienstes Loaddy.com simulieren. Dort können Sie die Anzahl der Benutzer und den wachsenden Lasttyp festlegen. Das Diagramm zeigt, wie der Server auf sie reagiert. Es wird angenommen, dass ein Benutzer innerhalb von 10 Sekunden ungefähr eine Anfrage an die Site generiert. Nehmen Sie als Test-Site einen Demo-Online-Shop auf cms moguta. Es wird mit Testwaren gefüllt, die auf der Hauptseite nach verschiedenen Kriterien angezeigt werden (dh, wenn die Seite erstellt wird, wird an der Datenbank gearbeitet usw.). Auf die eine oder andere Weise können Sie die Modi untereinander vergleichen.

Als Test-Site werden wir einen VPS-Server unter Ubuntu erstellen. Seine Konfiguration wird [1 Kern, 1 GB RAM] sein. Wir gehen davon aus, dass genau diese Einstiegsserver in den meisten Fällen für neue Projekte erstellt werden. Die Testversion des Online-Shops ist unter der IP-Adresse http://130.193.44.219/ verfügbar.

Auch klassisches Hosting ist nützlich, für das wir denselben Online-Shop füllen, um Tests durchzuführen. Sie können unseren eigenen Weg gehen und die gleichen Tests für Ihr Projekt durchführen!

Da in den meisten Fällen ein Control Panel zusammen mit vps angeboten wird, werden wir die wichtigsten Änderungen an den darin enthaltenen Einstellungen vornehmen. Auf dem vps-Server gibt es drei Betriebsmodi:

  • Apache
  • Apache im CGI-Modus;
  • Nginx + php-fpm (ohne Apache).

Aber zuerst testen wir das Hosting:

Klassisches Low-Cost-Hosting


Bild
Das Ergebnis finden Sie hier .

Fehler treten auf, wenn die Anzahl der Besucher 50 Personen überschreitet. Beim Hosting werden keine Inhalte mehr angezeigt. Wenn Sie jedoch das Hosting-Kontrollfeld aufrufen, wird Folgendes angezeigt:
Ihre Website unterliegt seit 24 Stunden Einschränkungen. Die Prozessorressourcen für Ihre Site waren begrenzt. Sie haben 126 Mal die Grenzen von Eingabeprozessen erreicht (die Anzahl der gleichzeitig ausgeführten PHP- und CGI-Skripte, geplanten Aufgaben und Konsolensitzungen).
Hosting ist natürlich Hosting, umso günstiger. Sie können natürlich einen Tarif finden, der mehr Optionen bietet, aber Sie müssen all dies berücksichtigen, die genauen Daten der Einschränkungen und jeden Hosting-Anbieter herausfinden.

VPS: Apache


Als nächstes folgt unser Test Air Force mit Apache-Modus, der übrigens standardmäßig bei der Installation des ISP-Bedienfelds angeboten wird.

Bild

Das Ergebnis finden Sie hier .

Probleme beginnen, wenn die Anzahl der Benutzer 90 überschreitet. Wenn wir über ssh zu unserem Server gehen und diesen Moment in der Liste der Prozesse mit dem Befehl top betrachten, sortiert mit Umschalt + M (nach der Menge des verbrauchten Speichers), sehen wir ungefähr Folgendes:

Bild

Wir sehen, dass der Apache2-Prozess zu vielen Tochterunternehmen gewachsen ist und sie den gesamten RAM unseres vps-Servers verbraucht haben.

Hier müssen Sie eine kleine Bemerkung machen. Tatsache ist, dass es theoretisch einen Modus für den Apache-Server gibt, der es ermöglicht, anstelle dieser großen Anzahl von untergeordneten Prozessen für jede Verbindung mehrere sogenannte Multithreads zu erstellen, von denen jeder mehrere Verbindungen bedienen würde. Dieser Modus wird im Gegensatz zur Standardvorgabel als Worker bezeichnet . Es ist jedoch nicht einfach, es zu installieren. In Panels wie ISP ist dies nicht möglich. Wenn Sie jedoch verwirrt sind und versuchen, es über ssh zu tun, stellt sich heraus, dass das Ausschalten der Vorgabel und das Einschalten des Workers nicht ausreicht. Sie benötigen dennoch eine thread-sichere Version von PHP. Und wenn Module wie Zend oder IonCube verwendet werden, müssen sie auch threadsicher sein. Auf der offiziellen PHP-Seite wird jedoch nicht empfohlen , diesen Modus einzustellen.

VPS: CGI


Mal sehen, was passiert, wenn der CGI-Modus verwendet wird. Dazu müssen Sie die Verwendung von PHP im CGI-Modus in der ISP-Systemsteuerung zulassen. Dies erfolgt im Abschnitt "Konten - Benutzer - Einstellungen für den Benutzer".

Bild

Das Ergebnis finden Sie hier .

Es stellte sich ein trostloses Bild heraus. Der Server weigert sich, bereits mit mehr als 55 Besuchern Inhalte herauszugeben. Der Arbeitsspeicher wird durch "PHP" -Prozesse aufgebraucht. Als nächstes wird versucht, die Funktionalität wiederherzustellen, die jedoch zu fast 100% fehlschlägt.

VPS: Nginx + PHP-FPM


Es ist an der Zeit, einen Modus zu verwenden, in dem der Apache-Server überhaupt nicht verwendet wird, stattdessen Nginx arbeitet und PHP vom PHP-Fpm-Modul verarbeitet wird. Wenn Sie das ISP-Kontrollfeld verwenden, müssen Sie diesen Modus für den Benutzer aktivieren. Dies erfolgt auch im Abschnitt "Konten - Benutzer - Benutzereinstellungen". Dieser Modus sollte auch im Abschnitt "Einstellungen - Funktionen - Webserver (www)" verfügbar sein.

Bild

Das Ergebnis finden Sie hier .

Was du brauchst! 100% Verfügbarkeit, während die Download-Geschwindigkeit und die Server-Antwortzeit auf einem akzeptablen Niveau liegen, obwohl sie mit zunehmender Last zunehmen. Trotzdem kommt der Server zurecht!

Schauen wir uns die Prozesstabelle zum Zeitpunkt der maximalen Auslastung des Servers an:

Bild

Wir sehen, dass wir immer noch genügend RAM zur Verfügung haben. Und die untergeordneten Prozesse von php-fpm7.0 wachsen nicht in großer Anzahl, sondern sind auf 5 Instanzen beschränkt, von denen jede mehrere Threads bedient.

Nun, es sieht so aus, als ob ein "Gewinnmodus" definiert ist. Lassen Sie uns herausfinden, wie viele gleichzeitige Besucher unser Server in diesem Modus bedienen kann. Aber vorher machen wir ein bisschen "Tuning". Erstens kann Apache, da es für einen solchen Serverbetrieb nicht verwendet wird, vollständig deaktiviert werden. Wir werden dies in der ISP-Systemsteuerung im Abschnitt "System - Dienste" tun. Zweitens ändern wir ein wenig das Prinzip des Startens von PHP-Fpm-Prozessen. Standardmäßig ist es dynamisch. Dies bedeutet, dass untergeordnete Prozesse auch dann im Speicher hängen bleiben, wenn sie nicht benötigt werden. Der Speicher wird jedoch nicht freigegeben, und im Laufe der Zeit können diese Prozesse stärker wachsen, als wir möchten. Daher wird vorgeschlagen, den On-Demand-Modus auf Anfrage einzustellen. Legen Sie die Anzahl der untergeordneten Prozesse und das Zeitlimit für diese fest.

Dazu müssen Sie über ssh zum Server gehen und diese Einstellungen in der PHP-Konfigurationsdatei registrieren. Dies erfolgt bequem in der Datei für den Benutzer, für den die Domäne in ISP erstellt wurde.

Es befindet sich normalerweise in /etc/php/7.0/fpm/pool.d

Also:
sudo nano /etc/php/7.0/fpm/pool.d/www-root.conf 


Wir sehen dort standardmäßig die folgenden Einstellungen:

 [www-root] pm = dynamic pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_children = 5 pm.max_spare_servers = 5 

Um den On-Demand-Modus zu aktivieren, müssen Sie diesen ersetzen durch:
 pm = ondemand pm.max_children = 5 pm.process_idle_timeout = 10s 

Und starten Sie php-fpm mit dem Befehl neu

 sudo service php7.0-fpm restart 

Danach werden php-fpm7.0-Prozesse bei Bedarf erstellt (wenn eine Last vorhanden ist), ihre maximale Anzahl beträgt = 5, und nach 10 Sekunden Ausfallzeit wird der Prozess abgebrochen, wodurch RAM frei wird.

Für alle Fälle werden wir unseren Test erneut durchführen, um sicherzustellen, dass all diese Amateuraktivitäten die Website-Leistung nicht verschlechtert haben:

Bild

Das Ergebnis finden Sie hier .

Lassen Sie uns nun Loaddy mit vielen Besuchern ausführen, um zu verstehen, wie viele Verbindungen unser Server verarbeiten kann:

Bild

Das Ergebnis finden Sie hier .

Die gute Nachricht ist, dass alle Anfragen, wenn auch mit großer Verzögerung, mit einer großen Anzahl von ihnen pro Sekunde bearbeitet wurden. Die Serverantwortzeit beträgt fast 190 Sekunden mit mehr als 190 Treffern. Erinnern wir uns jedoch an das Diagramm des Apache-Modus, in dem wir bereits bei über 80 Benutzern 4 Sekunden Serverantwort erhalten haben, während im PHP-Fpm-Modus ähnliche Verzögerungen bei 130 Anfragen beobachtet werden, die wir speziell zugewiesen haben Cursor auf der Tabelle oben.
Dies ist jedoch das gleiche VPS.

Tabelle der Top-Prozesse am Ende des Tests (mit 200 Benutzern):

Bild

Beachten Sie, dass nach dem Testen der von pfp-fpm verwendete Speicher freigegeben wird:

Bild

Unser Server ist also bereit für neue Lasten.

Es muss beachtet werden, dass die Site im nginx + php-fpm-Modus arbeitet, was bedeutet, dass apache2 nicht in der Arbeit verwendet wird und daher .htaccess nicht verwendet wird. Dies mag nicht bequem erscheinen, ist jedoch die schnellstmögliche Option, und Suchmaschinen bewerten Websites, die schnell funktionieren, besser.

Fazit


Abschließend noch ein kleiner Punkt: Wenn Sie alles auf dem Server konfiguriert haben, was Sie wollten, und beschlossen haben, das ISP-Kontrollfeld zu trennen, oder Ihnen die Lizenz dafür ausgegangen ist, beachten Sie bitte, dass der "Kern" -Prozess von diesem weiterhin auf Ihrem Server hängt. Nach Monaten kann es wachsen, daher ist es besser, es zu "töten" und vom Start und von der Crona zu entfernen.

Wenn Sie die Site unabhängig mit Loaddy oder anderen Methoden testen möchten, finden Sie sie unter http://130.193.44.219/.

Source: https://habr.com/ru/post/de434198/


All Articles