Serveur IOCP

Accepteur Windows I/O Completion Ports pour une forte concurrence. Bascule le serveur sgcWebSockets vers l'IOHandler IOCP et sers des milliers de connexions depuis un petit pool de threads fixe au lieu d'un thread par connexion.

IOHandler IOCP

Un mode I/O Completion Ports Windows uniquement pour les serveurs sgcWebSockets standards. Active-le via IOHandlerOptions pour monter en charge bien au-delà du modèle Indy par défaut, un thread par connexion.

Classe du composant

TsgcWebSocketServer / TsgcWebSocketHTTPServer — activé via IOHandlerOptions.

Mécanisme

Windows I/O Completion Ports (Windows uniquement).

Plateformes

Windows

Édition

Enterprise

Règle le type d'IOHandler, c'est parti

Va dans la propriété IOHandlerOptions et sélectionne iohIOCP comme IOHandler Type. Laisse les nombres de threads à zéro pour un dimensionnement automatique selon le nombre de CPU.

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;

Ce qu'il y a à l'intérieur

Comment l'IOHandler IOCP se comporte et comment l'ajuster.

I/O par pool de threads

Gère des milliers de connexions depuis un pool de threads limité au lieu d'un thread par connexion, comme le fait Indy par défaut.

IOCPThreads

Threads utilisés pour les requêtes asynchrones (overlapped) IOCP. 0 dimensionne automatiquement selon le nombre de processeurs. Sur Delphi 7 et 2007 la valeur par défaut est 32, car cpucount n'est pas disponible.

WorkOpThreads

Épingle une connexion au même thread lorsque tu en as besoin. Les requêtes sont normalement réparties sur le pool, de sorte que chaque requête d'une connexion peut s'exécuter sur un thread différent. Mets une valeur supérieure à zéro uniquement si tu en as besoin. C'est un compromis de performance.

Quand l'utiliser

Recommandé lorsque tu dois gérer des milliers de connexions. Si ton serveur plafonne autour de 100 connexions concurrentes, le modèle de threads Indy par défaut convient.

Détection de déconnexion

IOCP détecte un socket mort seulement lors d'une écriture. Active CleanDisconnect sur TsgcWebSocketClient ou un heartbeat côté serveur afin que le serveur apprenne la coupure et que OnDisconnect se déclenche.

Spécifications & références

Sources faisant autorité pour le mécanisme sur lequel ce mode est bâti.

Documentation & démos

Lien direct vers la référence de la fonctionnalité, récupère le projet de démo prêt à l'emploi et télécharge l'essai.

Aide en ligne — IOCP Référence de la fonctionnalité pour activer les Windows I/O Completion Ports sur le serveur sgcWebSockets.
Projet de démo — Demos\Server Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous.
Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque.

Monte en charge jusqu'à des milliers de connexions

Télécharge l'essai gratuit et bascule ton serveur Delphi vers l'IOHandler IOCP de Windows.