Los beneficios de rendimiento del caché de página completa en Magento Enterprise son bastante conocidos. Lo que puede no ser tan conocido es que, para obtener el máximo beneficio de esto, debe estar completamente poblado y en caliente, particularmente en grandes conjuntos de productos en los que no tiene solo unas pocas páginas, haciendo uso del tráfico orgánico para imprima lo suficientemente rápido.
Magento incluye un cronjob incorporado para rastrear el sitio y calentar el FPC temprano en la mañana.
He visto y escuchado sobre problemas causados por trabajos de la madrugada que tardan demasiado en ejecutarse, bloqueando la ejecución de otros trabajos, y me gustaría saber qué usan otros o sugerirían que se usen para hacer esto. Un par de ideas que tengo son:
- Arme un script de shell para rastrear cada página en el archivo de mapa del sitio generado.
- Use una entrada de crontab separada y un script PHP corto para iniciar Magento y ejecutar el proceso del rastreador directamente.
Cualquier idea y / o experiencia sobre esto es bienvenida.
fuente
Respuestas:
Puede usar el sitio en combinación con el
sitemap.xml
archivo, como lo hace MageSpeedTest .Entonces corre
Contenido procedente de aquí .
fuente
–delay
Simplemente no lo hacemos, en absoluto. Nunca. Diremos esto una y otra vez pero
Su sitio debe ser rápido sin la adición de FPC (o Barniz para ese hecho). Siempre habrá un momento en que el contenido no esté preparado (su escenario anterior).
En una tienda descargada, los tiempos de carga de la página con FPC no deberían ser mucho más impresionantes que los que no son FPC; Magento es felizmente capaz de
< 400ms
cargar tiempos de página en cachés estándar (en páginas de categoría / producto / búsqueda). FPC lo reducirá a< 80ms
, pero viene con advertencias.Los artículos nuevos / búsqueda más relevante no están actualizados hasta la invalidación o el vencimiento de TTL
etc.
Por qué confiar en FPC (o barniz) es una mala idea
Si está buscando asegurarse continuamente de que las memorias caché se ceben manualmente, es probable que haya algunas razones
No puedes guardar todo en caché
Si toma una tienda con solo 5 categorías, 2 niveles anidados de profundidad, 5 atributos filtrables, 5 opciones de atributos cada uno y 1000 productos; Esas son muchas combinaciones posibles.
25 opciones para elegir, escogiendo una hasta 5 veces seguidas: no soy estadístico , pero sé que eso es ... (suponiendo que la cantidad de opciones de atributos no disminuya por completo)
Ok, lo anterior no es un escenario probable, como me imagino, dentro de 3 clics: la cantidad de productos disponibles habría disminuido lo suficiente como para que el cliente encuentre su producto. Entonces, incluso si fuera ...
Luego multiplicado por 5 categorías, es decir 625 URL. En esta etapa, estamos hablando de un pequeño catálogo e ignorando por completo todas las URL del producto.
Tampoco tenemos en cuenta que si tuviera categorías anidadas con
is_anchor
on, aumentará exponencialmente.Entonces, para rastrear ese volumen de páginas, debe esperar que los tiempos de carga de su página sean agradables y bajos, para que sea un proceso rápido y liviano (por lo tanto, anula el propósito del rastreo), o que tenga tiempo suficiente para que se complete antes de que caduque el TTL.
Si sus páginas tenían un tiempo de carga de la página de 0.4s y usted tenía una CPU de 8 núcleos, entonces ...
0,5 minutos, no está mal, pero imaginemos que tuvo tiempos de carga de página de 2 segundos
Pero si tomaste el máximo escenario posible
Ese es su servidor de producción, con una carga de CPU del 100% durante 15 minutos. Reduciría la velocidad de rastreo proporcionalmente al TTL que desee.
Entonces, si desea que el contenido tenga un TTL de 3600, el rastreo podría ser 4 veces más lento, es decir. solo un 25% de CPU dedicada al rastreo. Eso es una gran cantidad de recursos solo para mantener el contenido de la categoría preparado: ni siquiera hemos tenido en cuenta los productos, los términos de búsqueda o las vistas adicionales de la tienda en esta etapa
De hecho, solo mirando el tamaño de las combinaciones en la
catalog_url_rewrites
tabla (que ni siquiera tiene en cuenta los parámetros de la navegación en capas) dará una idea de cuántas URL podría terminar necesitando rastrear.Ciertamente, cada tienda será diferente, pero lo que estoy tratando de recordar es que rastrear el sitio para preparar FPC no es práctico. Solo asegúrate de que tu tienda sea rápida para empezar .
Donde FPC es útil
Donde los beneficios de FPC entran en juego es en una tienda muy cargada, donde tienes niveles de tráfico genuinamente altos y los cachés están cebados de forma natural y continua solo por la simple caída del pie.
Luego, FPC entra en juego al reducir los gastos generales de infraestructura en el contenido comúnmente solicitado, reduciendo esas llamadas repetidas al backend de Magento.
Por lo tanto, descubrimos que FPC es excelente para implementar cuando tienes niveles de tráfico muy altos, no para reducir el tiempo de carga de la página, sino para reducir el uso de recursos.
A quién le importa, todavía quiero gatear
Bueno, entonces tienes dos opciones
Y hay muchas utilidades para hacer ambas cosas, estas son algunas que conozco
Usando Mage-Perftest
Puede rastrear su tienda con Mage-Perftest con bastante facilidad, primero descárguelo
Luego defina el proceso de rastreo usando el mapa del sitio de Magento (puede personalizarlo haciendo un mapa del sitio de cualquier URL, siempre que las URL estén envueltas en
<loc></loc>
etiquetas). El siguiente comando leerá todas las URL del archivo de mapa del sitio, luego rastreará (solo PHP) las URL en el transcurso de 1440 minutos (1 día). Si el servidor supera el 20% de CPU o un promedio de carga de 2, el rastreo se detendrá temporalmente.Si tiene 1000 URL, rastreadas durante 1 día, eso será aprox. 1 solicitud cada 86 segundo (s) ~ objetivo de 0.011 RPS
fuente
Guardaré mi diatriba completa para una publicación de blog en estos días, pero mientras tanto tengo un pico en mi pequeño calentador de caché
wfpc
.Prueba de rendimiento
Puede probar el rendimiento de su sitio Magento
./wfpc -t http://mymagentosite.com/sitemap.xml
Calentamiento FPC
Y puede calentar el FPC, que golpeará cada URL en sitemap.xml.
./wfpc -w http://mymagentosite.com/sitemap.xml
También puede poner un retraso entre las solicitudes si lo desea, aquí hay un retraso de 1 segundo entre las solicitudes.
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
El modo de prueba solo alcanza 10 URL al azar, por lo que una vez que haya calentado su FPC, puede ejecutar el modo de prueba para descubrir qué diferencia hace el FPC.
Pensamientos
Personalmente, creo que un calentador tiene sentido ... En un sitio pequeño con aproximadamente 40 páginas, el tiempo de descarga se reduce aproximadamente a la mitad por el FPC. En un sitio grande con casi 40,000 productos que usan Lesti_FPC con APCu como back-end, estoy usando un poco más de 200MB para el caché, que francamente no es nada en el servidor de producción de 8GB.
fuente