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?select vs poll vs epoll
Respuesta
Linux: epoll
FreeBSD: kqueue
Windows: ??
Hay librerías de contenedor, como libevent y libev, que pueden resumir esto por usted.
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 usted (casi seguro) que desee investigar son: técnicas de balanceo
- carga
- de subprocesos múltiples redes
- arquitectura de base de datos
- tablas hash perfecta
Además, es importante para notar th en UDP no tiene "conexiones" en oposición a 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.
Gracias por la respuesta. Entiendo que no existe tal cosa llamada conexiones UDP ya que es una comunicación orientada sin conexión. La aplicación que tenía en mente se basa en la sesión, así que en lugar de la sesión, la mencioné como conexión. Mi error. También he probado más de 200,000 sesiones basadas en select con aplicación multiproceso. Solo quería optimizar. Además, iam no es nuevo en la construcción de una solución de arquitectura escalable. El equilibrio de carga puede no ser adecuado para el tipo de servidor que iam mira. Definitivamente es una red multihilo. Probablemente usará algún tipo de patrón productor/consumidor. – ravi
El autor de CURL escribió un artículo increíble en poll vs select vs event libraries.
Esa guía no ayudó en absoluto. Básicamente asumió que todos conocían las principales diferencias entre los tres. – enigmaticPhysicist
Proporcione al menos un resumen y no solo un enlace al descubierto – MikeMB
@enigmaticPhysicist: estoy de acuerdo con usted. Encontré este artículo más detallado, espero que ayude: https://www.ulduzsoft.com/2014/01/select-poll-epoll-practical-difference-for-system-architects/ –
- 1. Advertencias de select/poll vs. reactores epoll en Twisted
- 2. epoll VS select
- 3. select(), poll() o epoll()? para el atributo sysfs
- 4. Win32 select/poll/eof/NADA?
- 5. rails collection_select vs. select
- 6. Excel Select vs Activar
- 7. Equivalente de select o poll en bash
- 8. Mongodb vs. Couch Db Select Performances
- 9. SET vs. SELECT - ¿Cuál es la diferencia?
- 10. SQL SELECT speed int vs varchar
- 11. Linux seleccionar() vs ppoll() vs pselect()
- 12. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 13. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
- 14. Boost :: Asio: io_service.run() vs poll() o cómo puedo integrar boost :: asio en mainloop
- 15. Implementación de encuesta en la implementación de linux vs poll en solaris
- 16. 'método' vs. 'mensaje' vs. 'función' vs. '???'
- 17. ACE vs Boost vs Poco vs wxWidgets
- 18. VS 2008 vs VS 2008 Express
- 19. Atomikos vs JOTM vs Bitronix vs?
- 20. Acumular vs fold vs reducir vs compress
- 21. .NET vs ASP.NET vs CLR vs ASP
- 22. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - FIABILIDAD
- 23. método vs función vs procedimiento vs clase?
- 24. Rhino simulacro vs Typemock vs JustMock vs
- 25. inline vs __inline vs __inline__ vs __forceinline?
- 26. Exec vs vs ExecWait ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs vs ExecDos ExeCmd
- 27. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, ¿qué tienen en común?
- 28. Crystalspace vs. Irrlicht vs. .....?
- 29. NetSqlAzMan vs AzMan vs (?????)
- 30. SpiderMonkey vs JavaScriptCore vs.
¿cuál es usted? diferentes os tienen diferente específico. –
Linux Redhat enterprise versión 5 – ravi
@ravi: También debe verificar marcos basados en eventos (asíncronos) como Twisted, donde puede escribir su servidor y probarlo con varios métodos de sondeo: [TwistedMatrix.com: Elegir un Reactor] (http : //twistedmatrix.com/documents/current/core/howto/choosing-reactor.html) –