Servidor IOCP

Acceptor de Windows I/O Completion Ports para alta simultaneidade. Mude o servidor sgcWebSockets para o IOHandler IOCP e atenda milhares de conexões a partir de um pool de threads pequeno e fixo, em vez de uma thread por conexão.

IOHandler IOCP

Um modo de I/O Completion Ports exclusivo do Windows para os servidores padrão do sgcWebSockets. Habilite-o por meio de IOHandlerOptions para escalar muito além do modelo padrão de uma thread por conexão do Indy.

Classe do componente

TsgcWebSocketServer / TsgcWebSocketHTTPServer — habilitado via IOHandlerOptions.

Mecanismo

Windows I/O Completion Ports (apenas Windows).

Plataformas

Windows

Edição

Enterprise

Defina o tipo de IOHandler, pronto

Acesse a propriedade IOHandlerOptions e selecione iohIOCP como IOHandler Type. Deixe as contagens de threads em zero para dimensionar automaticamente a partir da contagem de CPUs.

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;

O que está incluído

Como o IOHandler IOCP se comporta e como ajustá-lo.

E/S em pool de threads

Trate milhares de conexões a partir de um pool limitado de threads em vez de uma thread por conexão, do jeito que o Indy funciona por padrão.

IOCPThreads

Threads usadas para as requisições assíncronas (overlapped) do IOCP. 0 dimensiona automaticamente a partir da contagem de processadores. No Delphi 7 e 2007 o padrão é 32, porque cpucount não está disponível.

WorkOpThreads

Fixe uma conexão na mesma thread quando você precisar. As requisições são normalmente distribuídas pelo pool, então cada requisição de uma conexão pode rodar em uma thread diferente. Defina um valor maior que zero apenas se você precisar disso. É uma troca de desempenho.

Quando usar

Recomendado quando você precisa tratar milhares de conexões. Se o seu servidor chega ao limite por volta de 100 conexões simultâneas, o modelo de threads padrão do Indy é suficiente.

Detecção de desconexão

O IOCP detecta um socket morto apenas na escrita. Habilite CleanDisconnect no TsgcWebSocketClient ou um heartbeat no lado do servidor para que o servidor perceba a queda e OnDisconnect seja disparado.

Especificações & referências

Fontes autoritativas para o mecanismo sobre o qual este modo é construído.

Documentação & Demos

Acesse direto a referência do recurso, baixe o projeto de demonstração pronto para rodar e faça o download da versão de avaliação.

Ajuda online — IOCP Referência do recurso para habilitar as Windows I/O Completion Ports no servidor sgcWebSockets.
Projeto de demonstração — Demos\Server Projeto de exemplo pronto para rodar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Manual do usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.

Escale para milhares de conexões

Baixe a versão de avaliação gratuita e mude o seu servidor Delphi para o IOHandler IOCP do Windows.