Pregunta

Estamos trabajando en un sitio web para un cliente que (por una vez) se espera que obtenga una buena cantidad de tráfico desde el primer día.Hay comunicados de prensa, la gente escribe blogs sobre ello, etc.Estoy un poco preocupado de que vayamos a caer de bruces el primer día.¿Cuáles son los principales aspectos que usted debe tener en cuenta para asegurarse (de antemano, sin datos de tráfico reales) de poder permanecer en pie después de un gran lanzamiento?

Detalles:Esto es un L/A/M/PHP pila, utilizando un marco MVC desarrollado internamente.Actualmente, esto se está lanzando en un servidor, con Apache y MySQL, pero podemos dividirlo si es necesario.Ya estamos instalando memcached y haciendo todo el almacenamiento en caché a nivel de PHP que se nos ocurra.Algunas de las páginas requieren bastantes consultas y utilizamos Smarty como nuestro motor de plantillas.Tenga en cuenta que no hay tiempo para cambiar ninguno de estos aspectos principales: esta es solo la configuración.¿A qué tipo de cosas debemos prestar atención?

¿Fue útil?

Solución

Para preparar o manejar un pico (o pico) de rendimiento, primero determinaría si está listo mediante algunas pruebas de rendimiento simples con algo como jmetro.

Es fácil de configurar y comenzar y le brindará métricas tempranas sobre si manejará una carga máxima esperada.

Sin embargo, dadas sus limitaciones de tiempo, otros pasos a seguir serían preparar versiones estáticas del contenido que atraigan la mayor atención (como comunicados de prensa, si es el día de su lanzamiento).También asegúrese de hacer el mejor uso del almacenamiento en caché del lado del cliente (una solicitud menos a su servidor puede marcar la diferencia).La web ya diseñada para una escalabilidad extremadamente alta y un uso eficaz del almacenamiento en caché de contenido es su mejor amigo en estas situaciones.

Hay un excelente podcast sobre alta escalabilidad en radio de ingeniería de software sobre el diseño del nuevo sitio web de Guardian cuando las cosas se calman.

buena suerte en el lanzamiento

Otros consejos

Mida primero y luego optimice.¿Has realizado alguna prueba de carga?¿Dónde están los cuellos de botella?

Una vez que conozca sus cuellos de botella, podrá decidir inteligentemente si necesita cajas DB o cajas web adicionales; en este momento solo estaría adivinando.

Además, ¿cómo se comparan los resultados de sus pruebas de carga con el tráfico esperado?¿Puedes manejar el doble del tráfico esperado?¿5x?¿Con qué facilidad y rapidez se puede adquirir y lanzar hardware adicional?Estoy seguro de que el requisito empresarial es no fallar durante el lanzamiento, así que asegúrese de tener lotes de capacidad disponible, siempre podrás liberarla después cuando la carga se haya estabilizado y sepas lo que necesitas.

Al menos eliminaría todo el contenido estático.Configure otro vhost en otro lugar y cargue todos los gráficos/css/js en él.Puedes comprar algunos ciclos adicionales descargando la publicación de ese tipo de contenido.Si está realmente preocupado, puede registrarse y utilizar un servicio de distribución de contenido.Ahora hay muchos similares a Akamai y bastante baratos.

Otra idea podría ser utilizar Apache mod_proxy para mantener la salida de la página generada durante un período de tiempo específico.APC también sería bastante útil.Puede emplear la captura del búfer de salida + la última hora de modificación de los datos relacionados en la página y usar la versión en caché de APC.Si la página ya no es válida, la regenera y la almacena en APC nuevamente.

¡Buena suerte, será una experiencia de aprendizaje!

Tenga un período beta en el que permita la entrada de tantos usuarios como pueda, mida el rendimiento de su sitio y resuelva los errores antes de publicarlo.

Puede controlar la cantidad de usuarios explícitamente en una versión beta privada o en una versión beta semipública al estilo de Google, donde cada usuario tiene una cantidad de referencias que puede ofrecer a sus amigos.

Yo personalmente haría algunas cosas

1) Instalar algún tipo de equilibrador de carga/sistema de replicación de bases de datos

Esto significa que puede distribuir su servicio en varios servidores.¿No puedes permitirte el lujo de tener más de un servidor permanentemente?Utilice Amazon E3: es bueno para implementar cosas como esta (encienda algunos servidores más para manejar la carga)

2) Código en algunas restricciones de "carga alta"

Por ejemplo, si su búsqueda es ineficiente, apáguela cuando la carga alcance un cierto nivel."Lo sentimos, estamos ocupados, vuelve a intentar realizar la búsqueda más tarde"

3) Prueba de carga...Usa algo como ApacheBanco para poner a prueba sus servidores.

4) Personalmente, creo que es mejor desactivar las conexiones "Keep-Alive".Puede reducir ligeramente el rendimiento general, pero significa que en lugar de tener algo en el que el sitio funcione bien para unas pocas personas y los demás tengan tiempos de espera, todos obtendrán un servicio inconsistente, si llega a ese nivel.

Linux Format hizo un buen artículo sobre "Cómo sobrevivir a una barra y puntos"...que he encontrado útil en el pasado.Es disponible en línea como PDF

Primeros pasos básicos para fortalecer su sitio para un alto tráfico.

1) Utilice una herramienta de bajo costo como https://browsermob.com/ para probar la carga de su sitio.Como mínimo, deberías tener 100.000 visitantes únicos por hora.Si recibe un anuncio en la página de inicio de MSN, busque poder manejar 500.000 anuncios únicos por hora.

2) Mueva todo el contenido gráfico/video estático a una CDN.Edgecast y Amazon son dos excelentes opciones.

3) Utilice Jet Profiler para perfilar su servidor MySQL y analizar cualquier consulta de rendimiento lento.Los cambios menores pueden tener enormes beneficios.

Considere el uso Barniz- es un servidor proxy inverso de almacenamiento en caché (como Squid, pero con un propósito mucho más único).He administrado algunos sitios bastante grandes detrás de él y pareció funcionar muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top