Servidor EPOLL

Un aceptador epoll de Linux para alta concurrencia. Atienda miles de conexiones en el servidor sgcWebSockets usando un pool de hilos limitado en lugar de un hilo por conexión, como hace Indy por defecto.

IO Handler EPOLL

Un modo de I/O de alto rendimiento para servidores basados en Indy en Linux. Active epoll en el servidor estándar mediante la propiedad IOHandlerOptions y escale mucho más allá del modelo de un hilo por conexión.

Clase del componente

TsgcWebSocketServer / TsgcWebSocketHTTPServer — activado mediante IOHandlerOptions

Mecanismo

Aceptador epoll de Linux con pool de hilos — solo Linux

Plataformas

Linux

Edición

Enterprise

Establece el tipo de IOHandler y listo

Seleccione iohEPOLL en la propiedad IOHandlerOptions de un servidor Indy para cambiar del modelo de hilos por defecto al pool de hilos 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;

Qué hay dentro

Cómo funciona el pool de hilos epoll y cómo ajustarlo a su carga de trabajo.

I/O con pool de hilos

Atienda miles de conexiones usando un pool de hilos limitado en lugar de un hilo por conexión. Las peticiones asíncronas (overlapped) se reparten por el pool en lugar de dedicar un hilo a cada socket.

EPOLLThreads

Hilos usados para las peticiones asíncronas de EPOLL. El valor por defecto 0 significa que el número se calcula a partir del número de procesadores. En Delphi 7 y 2007 el valor por defecto es 32 porque cpucount no está soportado. Ajústelo manualmente cuando sea necesario.

WorkOpThreads

Por defecto cada petición de una conexión puede ejecutarse en un hilo distinto del pool. Establezca WorkOpThreads para fijar cada conexión al mismo hilo. Esto afecta al rendimiento, así que establezca un valor mayor que cero solo cuando requiera esta función.

Cuándo usarlo

Recomendado cuando necesite atender miles de conexiones. Si su servidor maneja un máximo de en torno a 100 conexiones simultáneas, puede quedarse con el modelo de hilos por defecto de Indy.

Detección de desconexión

EPOLL detecta un socket caído solo al escribir. Para disparar OnDisconnect, active CleanDisconnect := True en TsgcWebSocketClient, o active un heartbeat del lado del servidor que haga ping a los clientes periódicamente.

Límite de conexiones en Linux

Aumente el límite de descriptores de archivo abiertos para incrementar el número de conexiones abiertas simultáneas. ulimit -n 10000 fija el número máximo de descriptores de archivo abiertos en 10000.

Especificaciones y referencias

Fuentes autorizadas del mecanismo en el que se apoya este modo.

Documentación y demos

Accede directamente a la ayuda en línea, descarga el proyecto demo listo para ejecutar y lee el manual completo.

Ayuda en línea — EPOLL Referencia completa de la función con ejemplos de código para Delphi, C++ Builder y .NET.
Proyecto demo — Demos\Server Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets — descarga la prueba más abajo.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.

Escala a miles de conexiones en Linux

Descarga la prueba gratuita y cambia tu servidor Delphi al pool de hilos epoll de Linux.