Preparándose para un gran aumento en el tráfico

35

Nuestra compañía aparecerá en un programa de televisión en horario estelar esta semana, y nos han dicho que podemos esperar alrededor de 200,000 visitantes en nuestro sitio web a la vez.

Normalmente solo recibimos alrededor de 100 visitas por día, por lo que no tengo idea si podemos manejar tanto tráfico. Estamos alojados por 1and1.co.uk.

¿Hay alguna precaución que podamos tomar para evitar que nuestro sitio quede paralizado?

SamTheMan
fuente
3
¿Has leído esto? Definitivamente recomendaría habilitar un servicio como CloudFlare para manejar activos estáticos como mínimo. webmasters.stackexchange.com/questions/14394/…
richhallstoke
10
¡Debería hablar con 1and1.co.uk lo más rápido posible! ¡pueden mover su sitio web a uno de sus servicios VPS con una alta relación cpu / ram / ancho de banda que permitirá el aumento! luego pueden reducir la CPU / RAM para ahorrarle dinero
Simon Hayter
1
¿Estás en un plan de alojamiento compartido con 1 y 1? Si es así, realmente necesita buscar una solución alternativa (VPS muy potente o alojamiento basado en la nube) lo antes posible. Dudo mucho que cualquier entorno de alojamiento compartido pueda manejar ese tipo de tráfico.
Sean
3
Yo solía ser un servidor web. La mayoría de los hosts pueden manejar picos como este con bastante facilidad si lo saben de antemano y pueden ayudarlo con una gran cantidad de opciones que normalmente no se ofrecen. La razón de esto es simple. Es probable que tengan equipos a mano, como cachés de hardware, servidores adicionales, opciones de equilibrio de carga, opciones de conmutación por error, etc. La idea es que parezca que pueden manejar cualquier cosa con gracia. Es bueno para los negocios. La mayoría configurará estas opciones sin cargo. En realidad es una parte normal de los negocios.
closetnoc
Le gustaría saber que hay herramientas para probar una carga de servidor pesada. No sé ninguno por su nombre, pero son fáciles de encontrar. Amplifica la configuración y puedes darte una unidad de prueba controlada sin faceplanted cuando aparezca la gente real :)
Martijn

Respuestas:

26

Durante el período de alto tráfico, su servidor debe poder manejar todas las solicitudes realizadas por los visitantes de su sitio web. Pero hay algunos límites en las conexiones concurrentes manejadas por el servidor. Por lo tanto, es mejor atender las solicitudes de página lo más rápido posible.

Aquí hay algunas sugerencias para considerar en estas situaciones,

Mejoras a nivel de aplicación:

1. Minimice las solicitudes HTTP para acelerar los tiempos de carga de la página.

a) Combine todos los archivos JS en un solo archivo JS combinado y todos los archivos CSS en un solo archivo CSS combinado.

b) Minifique archivos JS y CSS, por lo que el tamaño del archivo se reducirá y se descargará más rápido.

c) Use CSS Sprites: cuando combina la mayoría o todas sus imágenes en un sprite, convierte múltiples solicitudes de imágenes en una sola. Luego, simplemente use la propiedad CSS de imagen de fondo para mostrar la sección de la imagen que necesita.

d) Retrasar la descarga de imágenes con carga diferida, esto será útil para reducir las solicitudes http.

2. Prepare páginas livianas que esperan más visitas:

a) Excluir elementos decorativos como imágenes o Flash siempre que sea posible; use texto en lugar de imágenes en la navegación del sitio y Chrome, y coloque la mayor parte del contenido en HTML.

b) Utilice páginas HTML estáticas en lugar de dinámicas; este último coloca más carga en sus servidores. También puede almacenar en caché la salida estática de páginas dinámicas para reducir la carga del servidor.


Mejoras a nivel de servidor:

1. Reduzca los valores de tiempo de espera del servidor consultando a su proveedor de alojamiento (no debería ser demasiado bajo).

Cuando los tiempos de espera son más bajos, la conexión se liberará pronto, por lo que el servidor podrá manejar más conexiones.

2. Utilice servicios de terceros como CloudFlare para el almacenamiento en caché de datos estáticos y para proteger su sitio web de usuarios malintencionados y ataques como DDOS.

3. Actualice el hardware de su servidor : actualice las memorias físicas y virtuales, aumente los límites de los procesos de E / S y entrada, si es necesario. Su proveedor de alojamiento podrá ayudarlo mejor.

4. Código dinámico de caché : use APC para almacenar en caché el código de operación PHP.

5. Equilibrio de carga : distribuya la carga en varios servidores de equilibrio de carga.


  • Cuando se toman todas las acciones requeridas, ahora es el momento de verificar si el sitio web está listo para un gran aumento de tráfico.

    Hay algunos servicios de terceros como loadimpact.com que proporcionan pruebas de carga con tráfico simulado. El análisis lo ayudará a comprender cuánta carga puede manejar su sitio web y qué se puede mejorar.

  • Además, durante el período de pico de tráfico, evite las operaciones de alto uso de CPU como cronjobs de copia de seguridad del sitio web, etc.

Nikhil Supekar
fuente
3
Estas son todas las cosas relacionadas con el sitio y excelente! Pero a menos que haya recibido 200,000 solicitudes en su servidor de una vez, esto puede no ser suficiente. Como host web anterior, me gustaba colocar una gran caché de hardware y ejecutar el sitio cargando la caché. También replicaría el sitio en varios servidores incluso si se comparten e implementaría el equilibrio de carga utilizando un proxy o firewall. Eso solía ser suficiente. La mayoría de las personas no se dan cuenta de que el cuello de botella más grande es en realidad HD I / O. Aumentar la memoria y usarla para el caché Apache y MySQL también ayuda mucho.
closetnoc
2
¡eres bienvenido a mejorar la respuesta! :)
Nikhil Supekar
1
¡Me gusta tu respuesta! Lo voté a favor. Por favor no se ofenda. Solo quería señalar algunas cosas desde la perspectiva de los servidores web. Solo un comentario. No es un golpe. De nuevo, tu respuesta es excelente !! A menudo sugiero que se comunique con el host porque estas cosas surgen de vez en cuando y hay opciones que el host puede hacer que ayudarían y no costarían nada. ¡La mayoría de los anfitriones están felices por la atención! Para mí fue un proceso simple ya que el hardware ya estaba en su lugar. No me habría llevado mucho tiempo preparar el sitio para tal evento. ;-) Gracias por la invitación.
closetnoc
1
No se ofende. En realidad, podríamos usar su experiencia con el hardware del servidor.
Nikhil Supekar
1
He estado retirado de la industria durante más de una década, con la excepción de la búsqueda de redes de confianza. Lo único que me gusta es subir el caché para Apache y MySQL o aplicaciones similares para reducir el enclavamiento del subsistema de E / S. Lo he hecho aquí y realmente puede funcionar. También advierto sobre demasiada memoria en los sistemas desde la tienda de respaldo, es decir. El mantenimiento del archivo de intercambio (et al.) puede aumentar radicalmente las solicitudes de E / S, que tienden a ser más lentas. Hay un punto dulce, pero ya no sé cuál es ese punto dulce. Sospecho que eres mucho más experto que yo. ;-)
closetnoc
7

En primer lugar, recomendaría Cloudflare. Puede crear una cuenta básica gratuita y enrutará el tráfico a través de centros de datos locales para minimizar la cantidad de saltos de servidor. Cloudflare también es ideal para almacenar en caché el contenido y tiene protección DDOS.

Aparte de eso, intente recortar la grasa de su capa de servicio. Asegúrese de no tener consultas de bases de datos excesivamente abarrotadas que obstaculicen su código, ni ninguna lógica intensiva de CPU que pueda simplificarse.

También intente almacenar en caché las consultas de la base de datos. Algunas excelentes opciones para el almacenamiento en caché de consultas son Redis o Memcache. OpCaching es otra consideración si está utilizando un lenguaje no compilado.

Pero probablemente lo más importante es mantener su contenido estático (es decir, css, js e imágenes) lo más optimizado posible. Minifique todos sus Javascript, combínelos en un solo archivo si es posible. Recuerde que cada archivo que se incluye en su sitio debe realizar varios saltos de servidor para llegar al usuario final.

¡No subestimes cuánto ancho de banda y tiempo de carga puedes ahorrar también al comprimir imágenes!

Finalmente, considere monitorear el desempeño con herramientas como New Relic.

¡¡La mejor de las suertes!!

Fuente: uno de los desarrolladores del sitio número 12 más popular en el Reino Unido según Alexa.

Ewan Valentine
fuente
5

Considere probar la carga de su sitio. Hay herramientas gratuitas disponibles como JMeter , The Grinder y Gatling , que pueden simular un gran número de visitantes a su sitio.

Al probar el impacto del tráfico pesado con anticipación, puede determinar si alguna afinación que haya realizado ha sido efectiva y, si no es así, ver más afinaciones.

James_pic
fuente
3

Si estás en 1 y 1, es probable que estés buscando un alojamiento barato. El alojamiento económico significa que tiende a hacer todo bajo una sola caja. Un punto importante para el alojamiento es que cuando aloja todo en el mismo cuadro, está dividiendo recursos entre partes importantes de su sitio:

  • Su servidor web (Apache, Nginx, etc.)
  • Su base de datos (MySQL, PostGreSQL, etc.)

Y siendo 1 y 1, hay una buena posibilidad de que esté utilizando un panel de control como Plesk o cPanel, lo que significa que tiene una capa adicional de cosas que compiten por los recursos. ¿Y el último clavo en tu ataúd? No tienes muchos recursos. Quizás tenga 1 CPU (o una CPU virtual) y muy poca RAM (si tiene más de 2 GB, me sorprenderá).

Cuando abandonamos 1 y 1 fuimos con un proveedor de alojamiento escalable (Amazon Web Services en nuestro caso) e hicimos varias cosas que antes no podíamos.

  1. Amazon tiene sus propias instancias para bases de datos (RDS), por lo que nuestra base de datos tiene recursos para respirar. La mayoría de los sistemas RDBMS viven y respiran en RAM y eso es algo de lo que podríamos obtener mucho. Ahora también puede aprovisionar SSD con alta E / S, lo que hace que el otro punto de estrangulamiento de la base de datos (escritura de datos) sea menos doloroso.
  2. Tenemos un equilibrador de carga con 2 servidores web. Con un backend de DB fuerte, no necesitábamos front-end de gama alta, por lo que obtuvimos dos servidores de gama baja.
  3. Cambiamos a algo que podría ofrecer máquinas totalmente configuradas bajo demanda. Usando algo como Chef o Puppet, puede agregar fácilmente nuevos servidores web y es 100% transparente para sus usuarios finales si se hace correctamente. AWS también tiene Opsworks para que pueda construir sus scripts directamente en AWS.
  4. Cambie el tamaño de su instancia a pedido. Esta es una pieza CLAVE para nosotros. Si el DB se empantana, puedo bajarlo y volver a lanzarlo como uno más grande en un par de minutos. Sí, implicaría tiempo de inactividad, pero unos minutos de tiempo de inactividad son mejores que horas de un sitio horriblemente lento. ¿Totalmente asustado del tiempo de inactividad? Mantenga una réplica de lectura en las alas, luego bájela, cámbiela a una instancia más grande, promueva para dominar y evite cualquier tiempo de inactividad por el costo de una máquina adicional.

AWS no es el único juego en la ciudad (Azure, Rackspace, etc.), pero asegúrese de que 1 y 1 puedan escalar para satisfacer su demanda.

Machavity
fuente
1

Verifique con su ISP y vea si hay un límite en su ancho de banda. Actualice su plan de alojamiento si el ancho de banda es insuficiente para la cantidad de tráfico que espera. No desea mostrar un mensaje de "Límite de ancho de banda excedido" a sus visitantes.

Salman A
fuente
1

Desde mi experiencia personal, he sabido que incluso el mejor VPS tiene sus limitaciones. Me estoy volviendo un verdadero laico aquí.

Uno de nuestro sitio web de deportes fue alojado en un VPS. Durante un partido entre Pakistán e India, recibimos más de 70,000 visitas. Teníamos un VPS Inmotinghosting con 4 GB de RAM y procesamiento de 2.algo GHz, ancho de banda de 1TB, almacenamiento SSD y otras cosas sofisticadas. También teníamos activada una versión paga de Cloudflare.

Era solo la mitad del partido y el sitio web dejó de funcionar. Nunca se activó durante el partido y perdimos potencialmente más de 70,000 visitantes más. Más tarde supimos que nuestro ancho de banda se había consumido y sin que el host de origen no funcionara, la mayoría de las veces CDN es inútil.

Lección: además de obtener un VPS y sintonizar un CND como Cloudflare, minimice el tamaño de su página. Cuanto menor es mejor. Puede utilizar el almacenamiento en caché de la página y la minificación de código, que es muy útil para manejar el tráfico.

imranhunzai
fuente
1

No has definido "todo a la vez" muy bien. Digamos que estás viendo 200,000 visitantes únicos en media hora. Eso es 111 solicitudes por segundo, sin tener en cuenta los visitantes que hacen clic y abren más páginas (lo que quieres, ¿verdad?).

Lo primero que haría es historias en Google de personas que manejan cantidades similares de tráfico. Muchas personas escribirán sobre sus experiencias en sus blogs para ayudar a otros. Notarás que es extremadamente difícil encontrar una historia sobre alguien que lo hace en un alojamiento compartido, y hay una razón para eso. Para empezar, busque soluciones como Digital Ocean o Amazon Web Services, utilizando el centro de datos más cercano a su audiencia. Y estoy de acuerdo en que descargar todos sus recursos estáticos a CloudFlare, incluso una cuenta gratuita, es una excelente idea.

Aparte de eso, pruebe su código agregando secuencias de comandos de tiempo en la parte superior e inferior de sus páginas, suponiendo que sean dinámicas. Suponiendo que mi suposición acerca de los números es correcta, deberá poder publicar cada página en menos de 10 milisegundos para mantener cualquier tipo de rendimiento aceptable. Si atiende todas las solicitudes a través de SSL de forma predeterminada, desactívelas durante un par de días mientras pasa la tormenta.

Además, 200,000 suena muy aterrador, pero tenga en cuenta que no necesita estar demasiado asustado (aunque debería ser, un poco). Por ejemplo, cuando la revista Paper publicó fotos NSFW de Kim Kardashian, solo se necesitaron cuatro servidores web de tamaño mediano y Amazon ELB para manejar la carga, según este artículo (SFW). Definitivamente no creo que su configuración actual pueda manejarlo, pero no debería necesitar exactamente dieciséis servidores web con 48 núcleos cada uno alimentado por su propio generador nuclear pequeño.

John Cave
fuente
1

Conozca esta vieja pero muy buena pregunta y desearía tener una buena información sobre el tema hace unos años ...

De vez en cuando tenemos sitios (relacionados con la actividad escolar) que aparecen en las redes de televisión. Dado que operamos con un presupuesto muy ajustado, el "equilibrio de carga" es la solución. Las cajas de VPS se pueden obtener bastante baratas en estos días y solo duplicamos / duplicamos nuestro contenido en 2-3 de ellas.

Mira este artículo y lee sobre "round-robin".

Puede encontrar más información sobre las pruebas de carga aquí .

Cuando comenzamos a tratar de manejar los picos, simplemente teníamos nuestro contenido en 2-3 cajas VPS y colocamos su NS en la configuración del registrador.

Leñoso
fuente
0

Lo mejor es tener servidores dedicados con múltiples clústeres para resolver su problema.

Himanshu Singla
fuente
0

Buena suerte reescribiendo su sitio web, cambiando de proveedor y migrando contenido a un CDN en menos de una semana.

Como se habrá dado cuenta de las otras respuestas, estas son las cosas mínimas que debe hacer para preparar su sitio para un gran aumento en el tráfico. Aunque si actualmente está ejecutando en 1and1.co.uk, probablemente no tenga un equipo sólido de ingenieros de red, DBA, programadores y optimizadores frontales que trabajen para usted.

No es probable que suceda, ¿verdad?

No ha dicho qué hace con su sitio web, si ejecuta el carrito de compras o si podría implementarse con contenido estático. Si este es el caso, entonces podría sobrevivir al tsunami si raspa todo el sitio en archivos estáticos y los publica en lugar del sitio normal (haga una copia de seguridad de la versión actual primero).

También debe hablar con 1 y 1 (con su tarjeta de crédito en la mano).

symcbean
fuente