Zitat von
Zacherl:
Das Problem ist dass ... sehr sehr viele Transfers gleichzeitig empfangen muss. ... würde die Kapazität des Empfängers schnell ausreitzen. (erstmal die Sockets und für jedes Socket mindestens einen Empfangs Thread, da ich non-blocking arbeite)
Hallo Zacherl, für Verbindungs orientierte Hochlast Server Anwendungen, wird normalerweise folgendes Konzept verwendet.
1. Ein Socket Acceptor Thread speichert alle eingehenden Client Verbindungen in einem Ringbuffer.
2. Diese Client Verbindungen (Ringbuffer) werden von einer einstellbaren Anzahl von WorkerThreads (~8 THreads per CPU) abgearbeitet.
Unter Windows ist TcpNumConnections defaultmäßig auf 16777214 (16 Millionen) Gleichzeitiger Connections ausgelegt.
Bei Verwendung von Winsock 2.0 ist ein ähnliches Konzept verfügbar, jedoch mit wesentlich performanteren IOCP's
Solltest Du bei einem derartigen Konzept Resourcen bzw. performance Probleme bekommen, sehe ich nur noch Die möglichkeit
auf ein verbindungsloses Protokoll (UDP) umzusteigen.
lg. Astat