Configuración del servidor/parámetro importante para 500Req/segundo

Configuración del servidor/parámetro importante para 500Req/segundo

Estoy configurando un servidor para usarlo como servidor nginx para un sitio web con mucho tráfico. Se espera que reciba tráfico de una gran cantidad de direcciones IP simultáneamente. Se espera que obtenga 500Req/Segundo con al menos 20 millones de IP únicas conectándolo.

Uno de los problemas que noté en mi servidor anterior estaba relacionado con iptables/ipconntrack. No estoy al tanto de este comportamiento y me encantaría saber qué parámetros de una máquina de bits ubuntu/debian (32/64) debo modificar para obtener el máximo rendimiento del servidor. Puedo poner mucha RAM en el servidor, pero la tarea crítica son los tiempos de respuesta. Idealmente, no queremos que ninguna conexión se cuelgue, se agote o espere y queremos tiempos de respuesta generales lo más bajos posible.

Respuesta1

¿Realmente necesitas iptables? Si está buscando obtener tanto rendimiento con una sola caja, le sugiero que la elimine por completo. Si configura cuidadosamente la máquina eliminando todos los servicios excepto nginx y configurando SSH para escuchar en una interfaz no pública (VPN, lan, etc.), es posible que pueda salirse con la suya sin un firewall. Eso al menos solucionaría tu único problema.

¿Estás intentando hacer esto enunoservidor web, o algunos de ellos? Incluso una simple operación por turnos de DNS le ayudaría a distribuir la carga entre algunas máquinas diferentes. Definitivamente también querrás tener varios servidores para mayor confiabilidad.

Respuesta2

Esta pregunta es bastante amplia. Mi mejor consejo para usted es que dé un paso atrás y piense en cómo va a ampliar su aplicación. ¿Quiere ampliar (algunos servidores grandes) o ampliar (muchos servidores pequeños) o posiblemente una combinación? Una vez que determine su estrategia de escalado, también podrá diseñar una estrategia de alta disponibilidad en torno a ella.

Dudo mucho que vea 20MM únicos en el momento en que se lance el sitio (solo para darle una perspectiva, eso lo convertiría en uno de los 200 mejores sitios web).

Tenga un buen plan para escalar con su tráfico y no corra al límite de la capacidad de sus servidores, permítase algo de margen para picos y obtenga nuevos equipos a medida que su tráfico crezca.

Recibimos estas preguntas de vez en cuando. Es bueno pensar en el futuro, pero no planee tener una infraestructura que sea capaz de manejar unidades únicas de 20MM/60MM/100MM desde el principio, estará desperdiciando su dinero y tendrá una infraestructura que en gran medida está ahí. inactivo.

Ahora, para responder a su pregunta, nosotros en Stack Overflow (actualmente) usamos iptable y estamos ejecutando módulos conntrack en nuestros enrutadores frontales sin ningún problema. Sugeriría publicar una nueva pregunta con detalles sobre el problema exacto que está viendo al ejecutar iptables/*conntrack* bajo carga.

Y finalmente una buena lectura.

Cómo ejecutamos S[OFU]/Stack Exchange
Blog de alta escalabilidad

Respuesta3

500 solicitudes por segundo realmente no es mucho, si todo lo que estás haciendo es servir archivos estáticos relativamente pequeños. Por otro lado, si son grandes o complejos (basados ​​en sesiones o dependientes de bases de datos, por ejemplo), entonces suponen una gran carga de trabajo.

Considere colocar un proxy inverso como Varnish frente a esta solución, configurado para usar un grupo malloc como caché. Un VCL correctamente ajustado le permitiría almacenar en el buffer la mayor parte del sitio en la memoria, lo que significa que nginx solo tendría que servir unos pocos bits seleccionados. También asegúrese de configurar noatime en el sistema de archivos.

información relacionada