Ist es für den Betrieb eines Webservers besser, mehr CPU-Kerne zu haben?


5

Ich habe gelesen, wie Benutzer-Threads Kernel-Threads in Wikipedia zugeordnet werden . Aus diesem Artikel geht hervor, dass FreeBSD das 1: 1-Threading (Kernel-Level-Threading) verwendet.

Daher wird jeder von der Anwendung erstellte Benutzerthread einem Kernelthread zugeordnet. Wenn ich davon ausgehe, dass ich einen Webserver baue, der jede neue Anfrage in einem Thread verarbeitet und auf FreeBSD läuft, wird durch eine Erhöhung der Anzahl der Kerne die Gesamtleistung der Anwendung verbessert?

Ich habe diese Frage CPU-Kerne gelesen : Je mehr desto besser? Ich möchte jedoch, dass der Umfang der Antworten speziell durch die 1: 1-Zuordnung zwischen Benutzer- und Kernel-Threads beeinflusst wird.


2
Mehr Kerne helfen bei der Mehrfachverarbeitung. Sie müssen untersuchen, ob dies Ihrem Webserver helfen würde. Wenn der Server durch Arbeitsspeicher, Datenträger oder Komponenten eingeschränkt ist, kann dies möglicherweise nicht hilfreich sein.
ernie

Antworten:


5

Die kurze Antwort lautet ja.

Die lange Antwort lautet ... mehr CPU-Kern bedeutet mehr Rechenleistung. Im Falle einer PHP / Ruby / Python / etc.-Webanwendung bedeutet dies mehr Ressourcen für die gleichzeitige Bearbeitung von Verbindungen. Mehr Kerne zu haben, macht den Unterschied bei Anwendungen mit hoher Last.

Meine persönliche Meinung ist, dass ich im Falle einer Wahl zwischen mehr Rechenleistung und mehr RAM in den meisten Fällen mehr RAM wähle. Mit RAM können Sie den Engpass bei der Datenträger-E / A verringern.

Durch die Verwendung von Cachesystemen wie PHP APC , Varnish und MySQL-Optimierung (Tabellencache, Abfragecache usw.) können Sie die Leistung Ihrer Website erheblich verbessern, ohne dass Sie mehr CPU-Leistung zum Generieren von Inhalten benötigen.

Wenn Ihre Website zwischengespeichert werden kann, treffen Sie diese Auswahl. Nur eine zunehmende Anzahl von CPU-Kernen ist auf lange Sicht eine verlierende Wahl.


1

Ja.

Moderne Webserver-Software verwendet für jeden Computer, der eine Verbindung zum Server herstellt, einen eigenen Prozess oder Thread. Darüber hinaus werden Back-End-Software wie MySQL oder PHP in separaten Prozessen oder Threads für jeden Benutzer ausgeführt, den sie warten müssen, sodass es immer hilfreich ist, über mehr Kerne zu verfügen.

Natürlich können in intensiveren Umgebungen die Festplattenleistung, der Arbeitsspeicher oder die Netzwerkbandbreite zu Engpässen werden. Mehr Speicher ermöglicht mehr Lese-Caching, wodurch der Zugriff auf langsamen Festplattenspeicher verringert wird. Wie von Biapy vorgeschlagen, sollten Sie sich bei vielen Anfragen pro Sekunde mit einer speziellen Caching-Software wie Varnish befassen, die die Systemlast erheblich reduziert.


1

Wie immer wird die Antwort lauten, dass es darauf ankommt.

Der nginx- Webserver funktioniert beispielsweise sehr gut , obwohl er keine Threads verwendet. Stattdessen wird eine ereignisgesteuerte Architektur verwendet. Es können und werden mehrere Worker-Prozesse verwendet, sodass mehrere Kerne verwendet werden können.

Wie Sie in den verknüpften Leistungsmessungen sehen können, erzeugt der Apache-Webserver mit Thread mehr Threads und verwendet mehr Speicher, wenn die Anzahl der gleichzeitigen Verbindungen zunimmt. Die von nginx belegte Speichermenge bleibt ziemlich konstant. Und bei der Anzahl der Anfragen, die pro Sekunde eingehen, schlägt Nginx Apache um ein Vielfaches.

Threads sind also nicht immer die beste Lösung.

Die Leistung hängt auch davon ab, wo sich Ihre Daten befinden. Wenn es auf einer Festplatte geparkt ist, ist der Zugriff langsamer als im RAM, der wiederum viel langsamer als der Prozessor-Cache ist. Wenn Sie Ihren Webserver beschleunigen möchten, sollten Sie einen Beschleuniger wie Lack verwenden . Erwägen Sie, diesen Artikel des Hauptautors des Lacks über die Leistung beim Web-Serving zu lesen . Die Botschaft ist , dass Sie verwenden das Betriebssystem des eingebauten in chaching Mechanismen und dass Sie sollten nicht versuchen , die gleiche Arbeit selbst zu tun.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.