Servidor EPOLL
Um acceptor epoll do Linux para alta simultaneidade. Trate milhares de conexões no servidor sgcWebSockets usando um pool limitado de threads em vez de uma thread por conexão, como o Indy faz por padrão.
Um acceptor epoll do Linux para alta simultaneidade. Trate milhares de conexões no servidor sgcWebSockets usando um pool limitado de threads em vez de uma thread por conexão, como o Indy faz por padrão.
Um modo de E/S de alto desempenho para servidores baseados em Indy no Linux. Habilite o epoll no servidor padrão por meio da propriedade IOHandlerOptions e escale muito além do modelo de uma thread por conexão.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — habilitado via IOHandlerOptions
Acceptor epoll do Linux em pool de threads — apenas Linux
Linux
Enterprise
Selecione iohEPOLL na propriedade IOHandlerOptions de um servidor Indy para mudar do modelo de threads padrão para o pool de threads do 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;
Como o pool de threads do epoll funciona e como ajustá-lo para a sua carga de trabalho.
Trate milhares de conexões usando um pool limitado de threads em vez de uma thread por conexão. As requisições assíncronas (overlapped) são despachadas pelo pool, em vez de dedicar uma thread a cada socket.
Threads usadas para as requisições assíncronas do EPOLL. O valor padrão 0 significa que a contagem é calculada a partir do número de processadores. No Delphi 7 e 2007 o padrão é 32 porque o cpucount não é suportado. Ajuste manualmente quando necessário.
Por padrão, cada requisição de uma conexão pode rodar em uma thread diferente do pool. Defina WorkOpThreads para fixar cada conexão na mesma thread. Isso impacta o desempenho, então defina um valor maior que zero apenas quando você precisar desse recurso.
Recomendado quando você precisa tratar milhares de conexões. Se o seu servidor trata no máximo cerca de 100 conexões simultâneas, você pode permanecer com o modelo de threads padrão do Indy.
O EPOLL detecta um socket morto apenas na escrita. Para disparar OnDisconnect, habilite CleanDisconnect := True no TsgcWebSocketClient, ou habilite um heartbeat no lado do servidor que faça ping nos clientes periodicamente.
Aumente o limite de descritores de arquivo abertos para elevar o número de conexões abertas simultâneas. ulimit -n 10000 define o número máximo de descritores de arquivo abertos para 10000.
Fontes autoritativas para o mecanismo do qual este modo depende.
Acesse direto a ajuda online, baixe o projeto de demonstração pronto para rodar e leia o manual completo.
| Ajuda online — EPOLL Referência completa do recurso com exemplos de código para Delphi, C++ Builder e .NET. | Abrir | |
| Projeto de demonstração — Demos\Server Projeto de exemplo pronto para rodar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo. | Abrir | |
| Manual do usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca. | Abrir |