Server EPOLL
Un acceptor basato su epoll di Linux per l'alta concorrenza. Gestisci migliaia di connessioni sul server sgcWebSockets usando un pool di thread limitato invece di un thread per connessione come fa Indy per impostazione predefinita.
Un acceptor basato su epoll di Linux per l'alta concorrenza. Gestisci migliaia di connessioni sul server sgcWebSockets usando un pool di thread limitato invece di un thread per connessione come fa Indy per impostazione predefinita.
Una modalità I/O ad alte prestazioni per i server basati su Indy su Linux. Abilita epoll sul server standard tramite la proprietà IOHandlerOptions e scala ben oltre il modello con un thread per connessione.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — abilitato tramite IOHandlerOptions
Acceptor epoll su pool di thread per Linux — solo Linux
Linux
Enterprise
Seleziona iohEPOLL sulla proprietà IOHandlerOptions di un server Indy per passare dal modello di thread predefinito al pool di thread 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;
Come funziona il pool di thread epoll e come ottimizzarlo per il tuo carico di lavoro.
Gestisci migliaia di connessioni usando un pool di thread limitato invece di un thread per connessione. Le richieste asincrone (overlapped) vengono distribuite sul pool anziché dedicare un thread a ciascun socket.
Thread usati per le richieste asincrone EPOLL. Il valore predefinito 0 significa che il numero viene calcolato dal numero di processori. Su Delphi 7 e 2007 il valore predefinito è 32 perché cpucount non è supportato. Regolalo manualmente quando serve.
Per impostazione predefinita ogni richiesta per una connessione può girare su un thread diverso del pool. Imposta WorkOpThreads per fissare ogni connessione allo stesso thread. Questo incide sulle prestazioni, quindi imposta un valore maggiore di zero solo quando ti serve questa funzionalità.
Consigliato quando devi gestire migliaia di connessioni. Se il tuo server gestisce al massimo un centinaio di connessioni concorrenti, puoi restare con il modello di thread predefinito di Indy.
EPOLL rileva un socket morto solo in scrittura. Per sollevare OnDisconnect, abilita CleanDisconnect := True su TsgcWebSocketClient, oppure abilita un heartbeat lato server che esegua il ping periodico dei client.
Aumenta il limite di file descriptor aperti per incrementare il numero di connessioni aperte concorrenti. ulimit -n 10000 imposta a 10000 il numero massimo di file descriptor aperti.
Fonti autorevoli per il meccanismo su cui si basa questa modalità.
Collegamenti diretti alla guida online, al progetto demo pronto all'uso e al manuale completo.
| Guida online — EPOLL Riferimento completo della funzionalità con esempi di codice per Delphi, C++ Builder e .NET. | Apri | |
| Progetto demo — Demos\Server Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |