EPOLL Server
Ein Linux-epoll-Acceptor für hohe Nebenläufigkeit. Bedienen Sie Tausende von Verbindungen auf dem sgcWebSockets-Server mit einem begrenzten Thread-Pool statt einem Thread pro Verbindung, wie Indy es standardmäßig tut.
Ein Linux-epoll-Acceptor für hohe Nebenläufigkeit. Bedienen Sie Tausende von Verbindungen auf dem sgcWebSockets-Server mit einem begrenzten Thread-Pool statt einem Thread pro Verbindung, wie Indy es standardmäßig tut.
Ein hochperformanter I/O-Modus für Indy-basierte Server unter Linux. Aktivieren Sie epoll auf dem Standard-Server über die Eigenschaft IOHandlerOptions und skalieren Sie weit über das Modell mit einem Thread pro Verbindung hinaus.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — aktiviert über IOHandlerOptions
Linux-epoll-Thread-Pool-Acceptor — nur Linux
Linux
Enterprise
Wählen Sie iohEPOLL in der Eigenschaft IOHandlerOptions eines Indy-Servers, um vom Standard-Thread-Modell auf den epoll-Thread-Pool umzustellen.
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;
Wie der epoll-Thread-Pool funktioniert und wie Sie ihn auf Ihre Last abstimmen.
Bedienen Sie Tausende von Verbindungen mit einem begrenzten Thread-Pool statt einem Thread pro Verbindung. Asynchrone (überlappte) Anfragen werden über den Pool verteilt, statt jedem Socket einen eigenen Thread zuzuweisen.
Threads für asynchrone EPOLL-Anfragen. Der Standardwert 0 bedeutet, dass die Anzahl aus der Prozessoranzahl berechnet wird. Unter Delphi 7 und 2007 ist der Standard 32, da cpucount nicht unterstützt wird. Passen Sie ihn bei Bedarf manuell an.
Standardmäßig kann jede Anfrage einer Verbindung auf einem anderen Pool-Thread laufen. Setzen Sie WorkOpThreads, um jede Verbindung an denselben Thread zu binden. Das wirkt sich auf die Performance aus, setzen Sie daher nur dann einen Wert größer als null, wenn Sie diese Funktion benötigen.
Empfohlen, wenn Sie Tausende von Verbindungen bedienen müssen. Wenn Ihr Server maximal etwa 100 gleichzeitige Verbindungen verarbeitet, können Sie beim standardmäßigen Indy-Thread-Modell bleiben.
EPOLL erkennt einen toten Socket nur beim Schreiben. Um OnDisconnect auszulösen, aktivieren Sie CleanDisconnect := True auf dem TsgcWebSocketClient oder einen serverseitigen Heartbeat, der die Clients regelmäßig anpingt.
Erhöhen Sie das Limit für offene Dateideskriptoren, um die Anzahl gleichzeitig offener Verbindungen zu steigern. ulimit -n 10000 setzt die maximale Anzahl offener Dateideskriptoren auf 10000.
Maßgebliche Quellen für den Mechanismus, auf den sich dieser Modus stützt.
Springe direkt zur Online-Hilfe, hol dir das sofort lauffähige Demo-Projekt und lies das vollständige Handbuch.
| Online-Hilfe — EPOLL Vollständige Funktionsreferenz mit Codebeispielen für Delphi, C++ Builder und .NET. | Öffnen | |
| Demo-Projekt — Demos\Server Sofort lauffähiges Beispielprojekt. Im sgcWebSockets-Paket enthalten — lade die Testversion unten herunter. | Öffnen | |
| Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek behandelt. | Öffnen |