Servidor IOCP

Aceptador de Windows I/O Completion Ports para alta concurrencia. Cambie el servidor sgcWebSockets al IOHandler IOCP y atienda miles de conexiones desde un pool de hilos pequeño y fijo en lugar de un hilo por conexión.

IOHandler IOCP

Un modo de Windows I/O Completion Ports, solo para Windows, para los servidores estándar de sgcWebSockets. Actívelo mediante IOHandlerOptions para escalar mucho más allá del modelo Indy por defecto de un hilo por conexión.

Clase del componente

TsgcWebSocketServer / TsgcWebSocketHTTPServer — activado mediante IOHandlerOptions.

Mecanismo

Windows I/O Completion Ports (solo Windows).

Plataformas

Windows

Edición

Enterprise

Establece el tipo de IOHandler y listo

Vaya a la propiedad IOHandlerOptions y seleccione iohIOCP como IOHandler Type. Deje los contadores de hilos a cero para dimensionarlos automáticamente a partir del número de 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;

Qué hay dentro

Cómo se comporta el IOHandler IOCP y cómo ajustarlo.

I/O con pool de hilos

Atienda miles de conexiones desde un pool de hilos limitado en lugar de un hilo por conexión, como funciona Indy por defecto.

IOCPThreads

Hilos usados para las peticiones asíncronas (overlapped) de IOCP. 0 los dimensiona automáticamente a partir del número de procesadores. En Delphi 7 y 2007 el valor por defecto es 32, porque cpucount no está disponible.

WorkOpThreads

Fije una conexión al mismo hilo cuando lo necesite. Las peticiones se reparten normalmente por el pool, de modo que cada petición de una conexión puede ejecutarse en un hilo distinto. Establezca un valor mayor que cero solo si lo requiere. Es un compromiso de rendimiento.

Cuándo usarlo

Recomendado cuando necesite atender miles de conexiones. Si su servidor se queda en torno a las 100 conexiones simultáneas, el modelo de hilos por defecto de Indy es suficiente.

Detección de desconexión

IOCP detecta un socket caído solo al escribir. Active CleanDisconnect en TsgcWebSocketClient o un heartbeat del lado del servidor para que el servidor se entere de la caída y se dispare OnDisconnect.

Especificaciones y referencias

Fuentes autorizadas del mecanismo sobre el que se construye este modo.

Documentación y demos

Accede directamente a la referencia de la función, descarga el proyecto demo listo para ejecutar y descarga la prueba.

Ayuda en línea — IOCP Referencia de la función para activar Windows I/O Completion Ports en el servidor sgcWebSockets.
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

Descarga la prueba gratuita y cambia tu servidor Delphi al IOHandler IOCP de Windows.