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 = 5000
y lo doy por terminado?¿Debería
server.max-fds = 5000
o 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_core
and mod_proxy_backend_http
, y utilizar proxy-core.max-keep-alive-requests
and 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.