Frage

Lassen Sie es mich so umrahmen ..

„Sagen, ich habe einen Anwendungsserver auf einem Single-Core-Intel-Prozessor läuft und Servieren 200 gleichzeitige Benutzer. Will die Hardware zu einem Dual-Core-System ermöglichen meine Anwendungsserver zu bewegen dienen jetzt 350 gleichzeitige Benutzer sagen“?

Die Basis Frage, die ich bin die Hoffnung, ist zu adressieren - „Kann Hinzufügen von zusätzlichen Prozessorkernen erhöhen helfen, die I / O-Funktionen des Servers“. Denn manchmal das ist genau das, was Hardware-Anbieter weisen auf, wenn ihre Multicore-Servern touting.

War es hilfreich?

Lösung

Sie haben Ihren Server profilieren, bestimmen seine Engpass, und behandeln sie.

Wenn Sie Speicher gebunden sind, mehr Speicher kaufen oder einen Computer mit schnellen Speicher kaufen.

Wenn Sie Datenträger gebunden sind, und tun eine Menge statischer Inhalte dienen, sollten Sie eine SSD-Laufwerk ein.

Wenn seine Datenbank gebunden ist, die Ansicht, dass.

Aber in der Regel sind Sie „Konfiguration gebunden“, und zwicken Ihre Konfiguration z.B. die Anzahl der Threads in einem Pool zu ändern, oder solche, erhalten Sie sofort eine Verbesserung geben.

Viele Webserver und Datenbanken sind genau die Software die Vorteile der zusätzlichen Kerne nehmen geschrieben. Natürlich sind viele erheben auch Lizenzgebühren pro Kern, so auch diesen Aspekt berücksichtigen.

Andere Tipps

Sie können oder keinen Nutzen sehen, aber da die CPU nicht wirklich die ich tun / O würde ich keinen signifikanten Nutzen erwarten ist die Aufgaben sind vor allem I / O gebunden.

EDIT: Meine Antwort geht davon aus, dass Ihr Code so geschrieben ist, dass Sie mehrere Kerne tatsächlich nutzen sind. Wenn es nicht ist, wird Ihre Anwendung nicht von zusätzlichen Kernen profitieren, aber die Maschine wird besser gerüstet für andere gleichzeitige Aufgaben dienen.

Das ist natürlich, hängt davon ab, wie Sie Ihren Anwendungsserver geschrieben wurde. Wenn die Software keine parallelen Programmiertechniken nicht verwendet, dann sind Sie nicht in der Lage es parallel laufen zu lassen, auch wenn die Hardware so unterstützt zu tun.

Wenn Ihr Server ist Single-Threaded (Auswahl mit basierten IO) und Anforderungsverarbeitung ist nebenwirkungsfreie (dh es konzeptionell parallelisierten sein könnte), dann sicherlich (angepasst) mehrere Instanzen auf einer Multi-Core-Maschine maximiert die Rechen Dienstprogramm der Maschine.

Ob dies zu einem höheren Durchsatz übersetzt oder nicht hängt davon ab, ob die Anforderungsverarbeitung wurde cpu gebunden. Als Faustregel ist IO der größte Engpass in verteilten Systemen. Aber das heißt, wenn (Anfrage) Meldungszusammensetz- signifikante Berechnung erfordert, dann gibt es eine gewisse CPU-Overhead über die IO-Kosten pro Anfrage gegeben ist. Mit mehreren CPUs unterstützen würde in diesem Fall eindeutig einen Unterschied machen.

Darüber hinaus Protokollebene Überlegungen, natürlich, wenn jede Anforderung der Verarbeitung erfordert erhebliche Berechnungen, einen CPU-Engpass mit der Serververfügbarkeit auswirken. mehrere CPUs verwendet, wird deutlich helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top