Configuración de lighttpd para muchas conexiones http ligeras y simultáneas Keep-Alive

Configuración de lighttpd para muchas conexiones http ligeras y simultáneas Keep-Alive

Estoy usando lighttpd como proxy de interfaz de usuario para mi servidor de aplicaciones personalizado basado en HTTP. Necesito configurar lighttpd para una gran cantidad (digamos alrededor de 5000) conexiones http simultáneas que tienen un tiempo de espera grande y una configuración KeepAlive. Cada conexión permanecerá prácticamente inactiva. Imagine un servidor de chat basado en HTTP.

Mi servidor HTTP utiliza una interacción tipo cometa http-push (consulte Wikipediahttp://en.wikipedia.org/wiki/Comet_(programación)). Específicamente, el cliente AJAX envía una solicitud GET a la que el servidor no responde inmediatamente. En cambio, el servidor espera con la conexión HTTP abierta hasta que necesita enviar un mensaje al cliente con el nuevo estado y luego envía la respuesta HTTP a la solicitud GET. El cliente procesa la respuesta y procede a enviar otra solicitud GET, que nuevamente el servidor no responderá de inmediato.

Sin embargo, por el bien de la pregunta, no es necesaria la naturaleza exacta de las solicitudes. Lo que se necesita es esencialmente una configuración lighttpd que permita abrir al mismo tiempo una gran cantidad de conexiones proxy HTTP simultáneas de bajo ancho de banda.

¿Cómo configuro lighttpd 1.4.19? Estoy ejecutando Ubuntu 8.04. lighttpd envía solicitudes a mi servidor de aplicaciones, así como a mi backend de Django.

  • ¿Simplemente lo configuro server.max-keep-alive-requests = 5000y lo doy por terminado?

  • ¿Debería server.max-fds = 5000o algún número mayor?

  • ¿Qué consideraciones de memoria existen?

  • ¿Quizás debería reforzar mi servidor de aplicaciones para que pueda usarse sin el proxy lighttpd (no tengo tanta confianza en que mi programación esté orientada directamente al mundo sin un proxy confiable)?

Se afirma que lighttpd puede manejar 10.000 conexiones simultáneas. ¿Cómo lo configuro para que haga la mitad de ese número, la mayoría de los cuales están inactivos?

Respuesta1

Recuerde que cada conexión proxy utiliza (un mínimo de) dos FD, uno para el cliente y otro para el servidor proxy. También considere ~5-50 FD para gastos generales.

En cuanto al resto de su pregunta, diría que necesita probar su aplicación en su entorno para encontrar la mejor configuración para usted.

Respuesta2

Necesitará Lighttpd-1.5.x (prácticamente de SVN) para hacer esto correctamente porque el proxy en 1.4.x no multiplexará con E/S el bit de comunicación backend Lighttpd <--> en 1.4.x.

Hasta donde yo sé, he descubierto que Lighttpd-1.5.x es el único proxy inverso capaz de hacer esto.

Desea utilizar mod_proxy_coreand mod_proxy_backend_http, y utilizar proxy-core.max-keep-alive-requestsand proxy-core.max-pool-size(tenga en cuenta que estos tienen el prefijo "proxy-core." en lugar de "server."):http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxyCore

He probado esto con 20 000 conexiones keep-alive simultáneas (Lighttpd <-> backend) y funciona bien.

información relacionada