Neuer Thread pro Client-Verbindung im Socket-Server?

8

Ich versuche, mehrere Verbindungen pro Zeit zu einem TCP-Socket-Server zu optimieren.

Wird es als gute Methode oder sogar als rational erachtet, jedes Mal, wenn ich eine Verbindungsanforderung erhalte, einen neuen Thread im Listener-Server zu initiieren?

Um wie viel Uhr sollte ich mir Gedanken über einen Server machen, der auf dieser Infrastruktur basiert? Was ist das Maximum an Hintergrund-Threads, die ich arbeiten kann, bis es keinen Sinn mehr macht?

Plattform ist C #, Framework ist Mono, Ziel OS ist CentOS, RAM ist 2.4G, Server ist auf den Wolken, und ich erwarte etwa 200 Verbindungsanfragen pro Sekunde.

    
Olaseni 24.03.2010, 05:33
quelle

1 Antwort

8

Nein, Sie sollten keinen Thread pro Verbindung haben. Stattdessen sollten Sie die asynchronen Methoden (BeginAccept / EndAccept, BeginSend / EndSend usw.) verwenden. Dadurch werden die Systemressourcen viel effizienter genutzt.

Insbesondere fügt jeder Thread, den Sie erstellen, zusätzlichen Aufwand in Bezug auf Kontextwechsel, Stapelspeicherplatz, Cache-Fehler usw. hinzu. Linux ist besser in der Verwaltung dieses Materials als zum Beispiel Windows, aber das sollte keine Entschuldigung sein, Ihnen die Freiheit zu geben, so viele Threads zu erstellen, wie Sie möchten;)

    
Dean Harding 24.03.2010, 05:37
quelle

Tags und Links