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.
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.
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.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — activé via IOHandlerOptions
Accepteur epoll Linux à pool de threads — Linux uniquement
Linux
Enterprise
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;
Comment fonctionne le pool de threads epoll et comment l'ajuster à ta charge de travail.
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.
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.
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é.
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.
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.
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.
Sources faisant autorité pour le mécanisme sur lequel ce mode repose.
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. | Ouvrir | |
| 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. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque. | Ouvrir |