La respuesta de Markdorison es básicamente el método aceptado para atacar este problema. Lo llevaré un poco más allá.
Cuando tiene Pressflow para D6 o Drupal para D7, Memcached y Varnish funcionan bien juntos, necesitará codificar su archivo VCL de forma personalizada . Hay algunos gratuitos disponibles que hacen puntos de partida, pero siempre necesitas jugar con ellos.
Para que Varnish funcione de manera óptima, asegúrese de iniciarlo con -s malloc xG en lugar del valor predeterminado de -s file / path / to / file. Además, con Varnish, tenga elementos estáticos de caché de Varnish durante el mayor tiempo posible.
Si tiene más de un servidor web, elimine la ETag del encabezado enviado a Varnish en VCL. También elimino Expires y simplemente confío en Age y max-age en los encabezados para que los navegadores vuelvan al sitio.
La versión 1.5 (a partir del 3 de marzo de 2011) sigue siendo la versión más rápida del módulo Memcached de Drupal.org. Normalmente lo implemento usando un único contenedor por servidor para reducir el tráfico tcp para conexiones a múltiples contenedores a gran escala)
Configure el almacenamiento en caché en "Rendimiento" como externo y establezca una antigüedad máxima que enviará los encabezados correctos a un proxy de almacenamiento en caché como Varnish.
Si no puede hacer que ciertas páginas se almacenen correctamente en Varnish, consulte las publicaciones de blog en la web que detallan cómo inspeccionar las solicitudes. Aquí hay una publicación de ejemplo que escribí hace un tiempo: ¿Qué está impidiendo que Varnish y Drupal Pressflow almacenen en caché vistas de páginas de usuarios anónimos?
Debe elegir InnoDB (o uno de sus otros nombres de otros proveedores como XtraDB) para MySQL y mover todas las tablas a él. Luego, consulte esta publicación de blog para obtener consejos básicos sobre la sintonización http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/
Tener una gran agrupación de almacenamiento intermedio es fundamentalmente importante. Al probar la carga del sitio, active el registro lento de consultas. Es probable que al principio desee capturar consultas que demoren más de 50 ms, luego ajustar las consultas y reducir de manera repetitiva el tiempo de captura de registro lento hasta que tenga la mayoría de las consultas en ejecución utilizando índices y ejecutándose con bastante rapidez.
Otros conceptos básicos implican tener APC para PHP. Si opta por un CGI rápido en lugar de mod_php, dedique un tiempo a intentar que la caché APC se comparta entre las instancias de php configurando un buen script de envoltura. También asegúrese de que el caché APC esté en un archivo mapeado de memoria para exprimir hasta el último bit de PHP.
Recomendaría comenzar con Pressflow (si usa Drupal 6), Memcache , Varnish y alguna forma de Content Distribution Network (CDN) como Akamai. El resultado final debería ser el menor número posible de usuarios que realmente lleguen a su servidor de origen.
Si tiene partes de la página que no puede almacenar en caché para usuarios no anónimos (cosas que son específicas de ese usuario, "Bienvenido usuario X", etc.), puede explorar opciones para llenar estas partes de la página, como asíncrono callbacks o edge edge incluye.
Si tiene un grupo más pequeño de usuarios internos (como un grupo de editores) que necesitan poder ver una versión sin caché del sitio, recomendaría exponer una versión sin caché de su sitio en una URL diferente (protegida detrás de una VPN o equivalente si es posible).
fuente
2500 visitas por segundo durante un día: si por "visita" se refiere a "página entregada", eso es 216 millones de páginas por día. Déjame decirte esto: no tienes 216 millones de páginas al día. Amo a estos clientes ...
Dicho esto, los datos de tráfico sin procesar no dicen nada. Si bien el consejo en este hilo es sólido sobre Varnish / CDN si todo lo que tiene es tráfico anónimo, pero si ha iniciado sesión en el tráfico, se enfrenta a un desafío. Pero antes de gastar una cantidad de tiempo y esfuerzo impíos para resolver un problema, asegúrese de tener un problema. 2500 golpes por segundo, Bing obtiene menos que eso, te das cuenta de eso, ¿verdad?
fuente
Lado del servidor
Lado del código
Base de datos
fuente
También escucharía este podcast de Lullabot sobre la forma en que configuraron el sitio web Grammys.com para una explosión de tráfico en el transcurso de una semana. Fue una explicación bastante educativa.
http://www.lullabot.com/podcasts/podcast-92-grammycom
fuente
Si bien es muy difícil predecir patrones, si tiene una idea clara de los niveles de tráfico. Prueba de carga tu solución. Hay una gran cantidad de opciones diferentes y no será posible predecir muchas cosas hasta que tenga tráfico en vivo, pero si carga la prueba tanto como sea posible, al menos tendrá un alto grado de confianza en que su configuración puede manejar el tráfico.
Todos los ajustes en el mundo no ayudarán si no lo prueba primero.
Esta fue una presentación en DC SF sobre cómo lo hizo el economista. http://sf2010.drupal.org/conference/sessions/performance-testing-economist-online-using-grinder
fuente
Para sitios web de alto tráfico, debe usar varios servidores y equilibrador de carga o simplemente usar CDN. También es muy importante almacenar en caché tanto como sea posible para minimizar la carga en los servidores web.
El uso de Content Delivery Network ( CDN ) ayuda a distribuir los recursos en varios dominios (fragmentación de dominio), lo que reduce la carga en el servidor web.
El uso de CDN ayuda con el almacenamiento en caché distribuido y la aceleración remota, también ayuda a mitigar los ataques DDoS , debido a múltiples puntos finales. Ayuda con la seguridad, porque el contenido en caché es más difícil de explotar.
Proveedores de ejemplo: Fastly , Rackspace , Akamai , Azure, CloudFlare, Amazon, MaxCDN, Verizon.
Aquí hay algunas sugerencias más:
ab
, JMeter para TTFB , pruebas de carga y estrés en su aplicación web.Entonces su arquitectura web desde el punto de vista del usuario puede verse así:
Para sugerencias de optimización de Drupal, verifique: ¿Cómo mejora el rendimiento de Drupal?
fuente
Habilita dos extensiones:
Tu rendimiento funcionará mejor.
Si está buscando ramitar el Zend OPcache y Wincache en Microsoft Azure, al principio cree un nombre de carpeta '
ini
' debajo 'D:\home\site\
'. Además, cree 2 archivos, '.user.ini
' y 'settings.ini
'Agregue la siguiente configuración en cada archivo:
.user.ini
setting.ini
Además, agregue una configuración de aplicación a su aplicación web con la clave
PHP_INI_SCAN_DIR
y el valord:\home\site\ini
Después de cambiar PHP_INI_SYSTEM, reinicie su aplicación web. Si desea obtener más información sobre la configuración de ramitas, consulte la documentación de Microsoft .
Después de la configuración anterior, mi sitio Drupal (Drupal 8.3) se carga en 3 segundos.
fuente
También puede examinar la redistribución de la carga en varios servidores con la ayuda de una solución de equilibrio de carga basada en DNS o software / hardware. Esto también provocaría tolerancia a fallas.
fuente