Server IOCP

Acceptor basato sulle Windows I/O Completion Ports per l'alta concorrenza. Passa il server sgcWebSockets all'IOHandler IOCP e servi migliaia di connessioni da un pool di thread piccolo e fisso invece di un thread per connessione.

IOHandler IOCP

Una modalità I/O Completion Ports, solo per Windows, per i server sgcWebSockets standard. Abilitala tramite IOHandlerOptions per scalare ben oltre il modello predefinito di Indy con un thread per connessione.

Classe del componente

TsgcWebSocketServer / TsgcWebSocketHTTPServer — abilitato tramite IOHandlerOptions.

Meccanismo

Windows I/O Completion Ports (solo Windows).

Piattaforme

Windows

Edizione

Enterprise

Imposta il tipo di IOHandler e via

Vai alla proprietà IOHandlerOptions e seleziona iohIOCP come IOHandler Type. Lascia il numero di thread a zero per dimensionarlo automaticamente dal numero di CPU.

Server.IOHandlerOptions.IOHandlerType := iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads := 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohIOCP;
Server->IOHandlerOptions->IOCP->IOCPThreads = 0;
Server->IOHandlerOptions->IOCP->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads = 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads = 0;

Cosa c'è dentro

Come si comporta l'IOHandler IOCP e come ottimizzarlo.

I/O su pool di thread

Gestisci migliaia di connessioni da un pool di thread limitato invece di un thread per connessione, come fa Indy per impostazione predefinita.

IOCPThreads

Thread usati per le richieste asincrone (overlapped) IOCP. 0 li dimensiona automaticamente dal numero di processori. Su Delphi 7 e 2007 il valore predefinito è 32, perché cpucount non è disponibile.

WorkOpThreads

Fissa una connessione allo stesso thread quando ne hai bisogno. Le richieste vengono normalmente distribuite sul pool, quindi ogni richiesta per una connessione può girare su un thread diverso. Imposta un valore maggiore di zero solo se ti serve. È un compromesso sulle prestazioni.

Quando usarlo

Consigliato quando devi gestire migliaia di connessioni. Se il tuo server arriva al massimo a un centinaio di connessioni concorrenti, il modello di thread predefinito di Indy va bene.

Rilevamento delle disconnessioni

IOCP rileva un socket morto solo in scrittura. Abilita CleanDisconnect su TsgcWebSocketClient oppure un heartbeat lato server affinché il server venga a conoscenza della caduta e scatti OnDisconnect.

Specifiche e riferimenti

Fonti autorevoli per il meccanismo su cui si basa questa modalità.

Documentazione e Demo

Collegamenti diretti al riferimento della funzionalità, al progetto demo pronto all'uso e al download della versione di prova.

Guida online — IOCP Riferimento della funzionalità per abilitare le Windows I/O Completion Ports sul server sgcWebSockets.
Progetto demo — Demos\Server Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.

Scala fino a migliaia di connessioni

Scarica la versione di prova gratuita e passa il tuo server Delphi all'IOHandler IOCP di Windows.