Serveur EPOLL

Un accepteur epoll Linux pour une forte concurrence. Gère des milliers de connexions sur le serveur sgcWebSockets à l'aide d'un pool de threads limité au lieu d'un thread par connexion comme le fait Indy par défaut.

IOHandler EPOLL

Un mode I/O haute performance pour les serveurs basés sur Indy sous Linux. Active epoll sur le serveur standard via la propriété IOHandlerOptions et monte en charge bien au-delà du modèle un thread par connexion.

Classe du composant

TsgcWebSocketServer / TsgcWebSocketHTTPServer — activé via IOHandlerOptions

Mécanisme

Accepteur epoll Linux à pool de threads — Linux uniquement

Plateformes

Linux

Édition

Enterprise

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

Sélectionne iohEPOLL sur la propriété IOHandlerOptions d'un serveur Indy pour passer du modèle de threads par défaut au pool de threads epoll.

Server.IOHandlerOptions.IOHandlerType := iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads := 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohEPOLL;
Server->IOHandlerOptions->EPOLL->EPOLLThreads = 0;
Server->IOHandlerOptions->EPOLL->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads = 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads = 0;

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

Comment fonctionne le pool de threads epoll et comment l'ajuster à ta charge de travail.

I/O par pool de threads

Gère des milliers de connexions à l'aide d'un pool de threads limité au lieu d'un thread par connexion. Les requêtes asynchrones (overlapped) sont distribuées sur le pool plutôt que de dédier un thread à chaque socket.

EPOLLThreads

Threads utilisés pour les requêtes asynchrones EPOLL. La valeur par défaut 0 signifie que le nombre est calculé à partir du nombre de processeurs. Sur Delphi 7 et 2007 la valeur par défaut est 32 car cpucount n'est pas pris en charge. Ajuste manuellement si nécessaire.

WorkOpThreads

Par défaut, chaque requête d'une connexion peut s'exécuter sur un thread différent du pool. Mets WorkOpThreads pour épingler chaque connexion au même thread. Cela impacte les performances, alors mets une valeur supérieure à zéro uniquement si tu as besoin de cette fonctionnalité.

Quand l'utiliser

Recommandé lorsque tu dois gérer des milliers de connexions. Si ton serveur gère au maximum environ 100 connexions concurrentes, tu peux rester sur le modèle de threads Indy par défaut.

Détection de déconnexion

EPOLL détecte un socket mort seulement lors d'une écriture. Pour déclencher OnDisconnect, active CleanDisconnect := True sur TsgcWebSocketClient, ou active un heartbeat côté serveur qui ping les clients périodiquement.

Limite de connexions Linux

Augmente le plafond de descripteurs de fichiers ouverts pour augmenter le nombre de connexions ouvertes concurrentes. ulimit -n 10000 fixe le nombre maximal de descripteurs de fichiers ouverts à 10000.

Spécifications & références

Sources faisant autorité pour le mécanisme sur lequel ce mode repose.

Documentation & démos

Lien direct vers l'aide en ligne, récupère le projet de démo prêt à l'emploi et lis le manuel complet.

Aide en ligne — EPOLL Référence complète de la fonctionnalité avec des exemples de code pour Delphi, C++ Builder et .NET.
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 sous Linux

Télécharge l'essai gratuit et bascule ton serveur Delphi vers le pool de threads epoll Linux.