EPOLL Server
Een Linux epoll-acceptor voor hoge concurrency. Verwerk duizenden verbindingen op de sgcWebSockets-server met een beperkte pool van threads in plaats van één thread per verbinding, zoals Indy standaard doet.
Een Linux epoll-acceptor voor hoge concurrency. Verwerk duizenden verbindingen op de sgcWebSockets-server met een beperkte pool van threads in plaats van één thread per verbinding, zoals Indy standaard doet.
Een hoogperformante I/O-modus voor Indy-gebaseerde servers op Linux. Schakel epoll in op de standaard server via de IOHandlerOptions-eigenschap en schaal ver voorbij het één-thread-per-verbinding-model.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — ingeschakeld via IOHandlerOptions
Linux epoll-thread-pool-acceptor — alleen Linux
Linux
Enterprise
Selecteer iohEPOLL op de IOHandlerOptions-eigenschap van een Indy-server om over te schakelen van het standaard thread-model naar de epoll-thread-pool.
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;
Hoe de epoll-thread-pool werkt en hoe je hem afstemt op je workload.
Verwerk duizenden verbindingen met een beperkte pool van threads in plaats van één thread per verbinding. Asynchrone (overlapped) requests worden over de pool verdeeld in plaats van een thread aan elke socket te wijden.
Threads die worden gebruikt voor EPOLL-asynchrone requests. De standaardwaarde 0 betekent dat het aantal wordt berekend op basis van het aantal processors. Op Delphi 7 en 2007 is de standaard 32 omdat cpucount niet wordt ondersteund. Pas dit handmatig aan wanneer nodig.
Standaard kan elke request voor een verbinding op een andere pool-thread draaien. Stel WorkOpThreads in om elke verbinding aan dezelfde thread te pinnen. Dit beïnvloedt de performance, dus stel alleen een waarde groter dan nul in wanneer je deze functie nodig hebt.
Aanbevolen wanneer je duizenden verbindingen moet verwerken. Als je server maximaal rond de 100 gelijktijdige verbindingen verwerkt, kun je bij het standaard Indy-thread-model blijven.
EPOLL detecteert een dode socket alleen bij schrijven. Om OnDisconnect te triggeren, schakel CleanDisconnect := True in op TsgcWebSocketClient, of schakel een server-side heartbeat in die clients periodiek pingt.
Verhoog de open-file-descriptor-limiet om het aantal gelijktijdig open verbindingen te vergroten. ulimit -n 10000 stelt het maximale aantal open file descriptors in op 10000.
Gezaghebbende bronnen voor het mechanisme waarop deze modus steunt.
Deep-link naar de online-help, pak het kant-en-klare demoproject en lees de volledige handleiding.
| Online-help — EPOLL Volledige featurereferentie met codevoorbeelden voor Delphi, C++ Builder en .NET. | Openen | |
| Demoproject — Demos\Server Kant-en-klaar voorbeeldproject. Wordt meegeleverd met het sgcWebSockets-pakket — download hieronder de proefversie. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt. | Openen |