Frage

Wenn Sie einen benutzerdefinierten Server zu schreiben, was ist die besten Praktiken oder Techniken maximale Anzahl von Benutzern zu bestimmen, die zu einem bestimmten Zeitpunkt mit dem Server verbinden können?

Ich würde davon ausgehen, dass die Fähigkeiten der Computer-Hardware, Netzwerk-Kapazität und Server-Protokolls würden alle wichtige Faktoren sein.

Auch, denken Sie, ist es eine gute Praxis ist die Anzahl der Netzwerkverbindungen zu einer bestimmten maximalen Anzahl von Benutzern zu begrenzen? Oder sollte der Server nicht die Anzahl der Netzwerkverbindungen begrenzen und die Leistung beeinträchtigen lassen, bis die Reaktionszeit extrem hoch ist?

War es hilfreich?

Lösung

Dan Kegel zusammen eine Zusammenfassung von Techniken für große Mengen an Netzwerkverbindungen von einem einzigen Server Handhabung hier: http://www.kegel.com/c10k.html

Andere Tipps

In der Regel moderne Server eine sehr große Anzahl von gleichzeitigen Verbindungen verarbeiten kann. Ich habe auf Systeme mit mehr als 8.000 gleichzeitig offenen TCP / IP-Sockets gearbeitet.

Sie benötigen einen qualitativ hochwertigen Service-Schnittstelle, diese Art von Last zu bewältigen Besuche libevent oder libev .

Das ist eine gute Frage, und es ist auf jeden Fall situationsabhängig. Was ist Ihr Computer? Haben Sie eine 4-Buchse Maschine gefüllt mit Quad-Core-Xeons, 128 GB RAM und Fibre-Channel-Connectivity (wie das Paar von Dell R900s gerade gekauft wir)? Oder sind Sie mit auf einem p3 550 mit 256 MB RAM und 56K-Modem? Wie viel Last tut jede Verbindung Platz auf dem Server? Welche Art von Antwort ist acceptible?

Dies sind die Fragen, die Sie beantworten müssen. Ich denke, der beste Weg, die Antwort ist durch Belastungstests zu finden. Erstellen Sie einen Komponententest der erwarteten (und vielleicht auch einige unerwarteten) Pfade, die Ihr Code gegen den Server durchführen wird. Suchen Sie einen Last-Test-Framework, das Ihnen erlaubt zu simulieren 10, 100, 1000, 10000 Benutzer diese Aufgaben zur gleichen Zeit durchgeführt wird.

Das wird Ihnen sagen, wie viele Verbindungen Ihrem Computer unterstützen kann.

Die große Sache über die Lade- / Unit-Test-Szenario ist, dass Sie in der Antwortzeit Erwartungen in die Komponententests und erhöhen die Last legen können, bis Sie außerhalb Ihrer Antwortzeit fallen. Wenn Sie eine Anforderung der Unterstützung X Anzahl der Benutzer mit Y zweiter Antwort haben, werden Sie in der Lage sein, es Tests mit Ihrer Last zu demonstrieren.

Einer der größten Rückschläge in hohen Parallelität Verbindungen ist eigentlich die beteiligten Router. Heimanwender orientiert Router haben in der Regel eine kleine NAT-Tabelle, verhindern, dass der Router von tatsächlich Wartung der Server die Verbindungen.

Seien Sie sicher, dass Ihr Router / Netzwerk-Infrastruktur-Setup zu erforschen genausogut.

Ich denke, Sie sollten die Anzahl der Verbindungen des Servers wird nicht zulassen, beschränken - nur keine Ausnahmen abfangen und ordnungsgemäß behandeln, die auftreten können, wenn die Annahme und Schließen von Verbindungen, und Sie sollten in Ordnung sein. Sie sollten diese Art von niedrigeren Level-Programmierung auf die zugrunde liegenden OS Schichten lassen - auf diese Weise können Sie Port des Servers einfacher usw.

Das hängt wirklich von Ihrem Betriebssystem.

Verschiedene Unix-Varianten werden „unbegrenzt“ Anzahl von Datei-Handles / Steckdosen andere haben hohe Werte wie 32768 unterstützen.

Ein typischer Benutzer Limit ist 8192, aber es kann in der Regel höher eingestellt werden.

Ich denke, Fenster ist mehr begrenzen, sondern die Server-Version kann höhere Grenzen gesetzt.

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