linux sockets epoll posix-select

linux - select vs poll vs epoll



sockets posix-select (3)

El autor de CURL escribió un artículo sorprendente sobre las bibliotecas de encuestas versus select vs event .

Estoy diseñando un nuevo servidor que necesita soportar miles de conexiones UDP (alrededor de 100,000 sesiones). ¿Alguna entrada o sugerencia sobre cuál usar?


La respuesta es epoll si está utilizando Linux, kqueue si está utilizando FreeBSD o Mac OS X, y puertos de terminación de E / S si está en Windows.

Algunas cosas adicionales que (casi con certeza) querrá investigar son:

  • Técnicas de equilibrio de carga
  • Redes multihilo
  • Arquitectura de base
  • Tablas hash perfectas

Además, es importante tener en cuenta que UDP no tiene "conexiones" en lugar de TCP. También le conviene comenzar desde pequeño y ampliar en gran escala, ya que las soluciones de depuración basadas en red pueden ser un desafío.


Linux: epoll FreeBSD: kqueue Windows: ??

Hay librerías wrapper, como libevent y libev, que pueden resumir esto por ti.