IOCP Server

Windows-I/O-Completion-Ports-Acceptor für hohe Nebenläufigkeit. Stellen Sie den sgcWebSockets-Server auf den IOCP-IOHandler um und bedienen Sie Tausende von Verbindungen aus einem kleinen, festen Thread-Pool statt einem Thread pro Verbindung.

IOCP-IOHandler

Ein reiner Windows-Modus mit I/O Completion Ports für die Standard-sgcWebSockets-Server. Aktivieren Sie ihn über IOHandlerOptions, um weit über das standardmäßige Indy-Modell mit einem Thread pro Verbindung hinaus zu skalieren.

Komponentenklasse

TsgcWebSocketServer / TsgcWebSocketHTTPServer — aktiviert über IOHandlerOptions.

Mechanismus

Windows I/O Completion Ports (nur Windows).

Plattformen

Windows

Edition

Enterprise

IOHandler-Typ setzen, loslegen

Gehen Sie zur Eigenschaft IOHandlerOptions und wählen Sie iohIOCP als IOHandler-Typ. Lassen Sie die Thread-Anzahlen auf null, damit sie automatisch anhand der CPU-Anzahl dimensioniert werden.

Server.IOHandlerOptions.IOHandlerType := iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads := 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohIOCP;
Server->IOHandlerOptions->IOCP->IOCPThreads = 0;
Server->IOHandlerOptions->IOCP->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads = 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads = 0;

Was steckt drin

Wie sich der IOCP-IOHandler verhält und wie Sie ihn abstimmen.

Thread-Pool-I/O

Bedienen Sie Tausende von Verbindungen aus einem begrenzten Thread-Pool statt einem Thread pro Verbindung, wie Indy standardmäßig arbeitet.

IOCPThreads

Threads für asynchrone (überlappte) IOCP-Anfragen. 0 dimensioniert automatisch anhand der Prozessoranzahl. Unter Delphi 7 und 2007 ist der Standard 32, da cpucount nicht verfügbar ist.

WorkOpThreads

Binden Sie eine Verbindung an denselben Thread, wenn Sie es benötigen. Anfragen werden normalerweise über den Pool verteilt, sodass jede Anfrage einer Verbindung auf einem anderen Thread laufen kann. Setzen Sie nur dann einen Wert größer als null, wenn Sie dies brauchen. Es ist ein Performance-Kompromiss.

Wann zu verwenden

Empfohlen, wenn Sie Tausende von Verbindungen bedienen müssen. Wenn Ihr Server bei etwa 100 gleichzeitigen Verbindungen an seine Grenze stößt, ist das standardmäßige Indy-Thread-Modell ausreichend.

Trennungserkennung

IOCP erkennt einen toten Socket nur beim Schreiben. Aktivieren Sie CleanDisconnect auf dem TsgcWebSocketClient oder einen serverseitigen Heartbeat, damit der Server vom Abbruch erfährt und OnDisconnect ausgelöst wird.

Spezifikationen & Referenzen

Maßgebliche Quellen für den Mechanismus, auf dem dieser Modus aufbaut.

Dokumentation & Demos

Springe direkt zur Funktionsreferenz, hol dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Online-Hilfe — IOCP Funktionsreferenz zum Aktivieren von Windows I/O Completion Ports auf dem sgcWebSockets-Server.
Demo-Projekt — Demos\Server Sofort lauffähiges Beispielprojekt. Im sgcWebSockets-Paket enthalten — lade die Testversion unten herunter.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek behandelt.

Skaliere auf Tausende von Verbindungen

Lade die kostenlose Testversion herunter und stelle deinen Delphi-Server auf den Windows-IOCP-IOHandler um.