Así que estoy un poco confundido a medida que voy investigando el almacenamiento en caché de página completa para Community Edition 1.8. Ya he implementado una Redis Cache de dos niveles, CDN, sintonicé my.cnf de MySQL para un rendimiento máximo (con la base de datos en un servidor separado, por supuesto), y tengo 2 servidores que alojan nuestra tienda detrás de un equilibrador de carga. Digo eso para señalar que no estoy inmediatamente saltando para el FPC antes de hacer los ajustes iniciales de rendimiento.
Nunca he usado Varnish antes en ningún tipo de sitio, y mucho menos Magento, y tampoco he configurado un FPC en Magento. Entiendo que Varnish es un proxy que actúa como un cruce entre un CDN y un caché de página por sí mismo, enviando datos al navegador incluso antes de que la solicitud llegue al servidor web. Y a mi entender, un módulo FPC crea una memoria caché local que el servidor web en sí mismo distribuye. Sé que para ambas configuraciones, debe hacer un poco de "Perforación de agujeros" para llevar el contenido dinámico al navegador (aunque las técnicas son diferentes, entre usar un módulo o usar Barniz). Corrígeme si no estoy entendiendo nada aquí.
Hasta ahora, pensaba en ellos como dos entidades separadas que podría implementar para ayudar a su sitio, pero ahora algunas cosas que he leído parecen implicar lo contrario. Mi plan original era comprar el módulo " Warp Advanced Full Page Cache " para Magento (anteriormente, el "Tiny Brick Lightspeed FPC", creo), ya que parece ser el más popular, aunque sea un poco más caro (pero, francamente , $ 350 no es mucho para nuestra empresa, especialmente por lo que puede hacer). Yo y 2 de mis colegas desarrolladores estábamos planeando aprender a implementarlo de manera adecuada y completa dentro de nuestro propio tema personalizado y casero para maximizar lo que podemos obtener de él. Después de que se hizo eso, en algún momento en el camino, pensé que también buscaría implementar Varnish, pero, como dije antes, había entendido que estaban separados.
Ahora, sin embargo, estoy comenzando a encontrar extensiones como esta PageCache Powered by Varnish que es gratuita, o esta Vortex Cache Powered by Varnish Cache que cuesta casi $ 800 USD, que son módulos Magento Full Page Cache que funcionan directamente con Varnish.
Mi pregunta para usted, cambio de pila, es ¿cómo debería ver un FPC y Varnish? Como entidades separadas? Si es así, ¿son mutuamente excluyentes? ¿Son las dos caras de la misma moneda que debería implementar juntas? ¿O son similares pero no exclusivos ni inclusivos entre sí?
¿Puedo usar el Warp Advanced FPC que mencioné anteriormente con Varnish? ¿ Debo usarlo con barniz? ¿O sería mejor usar un FPC diferente si planeo usar Varnish? O aún más, ¿hay un FPC tan bueno que no necesito barniz? O viceversa, ¿debería usar Varnish y deshacerme de la idea de FPC?
Perdón por el muro de texto, pero he estado mirando muchos artículos, blogs y publicaciones en foros, y no he podido discernir una respuesta definitiva a esas preguntas. Realmente aprecio su ayuda y aporte en este asunto =)
Ah, y por último, una pregunta rápida sobre Varnish y servidores web. Actualmente estoy usando la configuración normal de la pila de Apache LAMP, pero desde hace un tiempo he visto a personas entusiasmadas con el uso de Nginx con Magento. He hecho algunas pruebas, pruebas de estrés y carga, y parece que definitivamente puede funcionar un poco mejor en las condiciones adecuadas. Como tal, estaba considerando cambiar en algún momento en el futuro cercano. ¿Esto afectaría de alguna manera mi deseo y decisión de usar un FPC y / o Barniz?
¡¡¡Gracias!!!
EDITAR: ¡Oh! Y una pregunta rápida más: dado que tengo dos servidores que alojan mi sitio detrás de un equilibrador de carga (que también es una configuración que se puede aumentar horizontalmente si fuera necesario), hago un uso completo de Redis y Memcached alojados en un servidor separado del Web y DB para mis sesiones y cada nivel de la caché de dos niveles de Magento (bueno, Zend). ¿Asumo que el FPC almacenaría sus datos en uno de esos sistemas? ¿Necesitaría tener una extensión específica para almacenarlo allí o todos lo hacen? Y aunque supongo que no, ¿afectaría esto a Varnish de todos modos? ¡¡Gracias de nuevo!!
fuente
Respuestas:
Hay dos cosas difíciles en informática:
La perforación de agujeros cae en la categoría # 2 :)
General
El mejor enfoque es comenzar en los puntos más bajos de la pila y optimizar hasta la interfaz de Magento.
Base de datos y sistema de archivos
Siempre deben ser las primeras áreas en las que centrarse. Porque. E / S
MyTop es un útil script perl basado en Linux que imitará el comando 'top' de Linux y le dará una idea del estado de sus instancias de MySQL.
Htop es una parte superior más robusta . La función de strace puede ayudar a determinar las entradas y salidas de un proceso para encontrar posibles cuellos de botella.
Iotop es otra herramienta a considerar para monitorear E / S.
Otros útiles scripts de utilidad como mysqltuner.pl y mysql tunning primer pueden ofrecer información sobre las variables de tiempo de ejecución de MySQL y ofrecer consejos para ayudar. Tenga en cuenta que estos deben ser guías, ya que el mejor enfoque es siempre una evaluación de los requisitos y el ajuste basado en los datos conocidos recopilados. Hacerlo a ciegas puede causar más daño a veces que bien. Y ejecutarlos prematuramente sin al menos 24 horas de variables de tiempo de ejecución mysql puede ofrecer malos consejos.
Tenga en cuenta que Percona , MariaDB y MySQL estándar deberían funcionar con todo lo anterior. Favorece a Percona como una bifurcación MySQL, ya que Magento es tan pesado en InnoDB y XtraDB ofrece muchas herramientas y mejoras para el motor de base de datos.
Apache o Nginx
Todavía uso Apache, ya que ha servido a muchos otros, incluido yo mismo. También he usado y configurado Nginx. Si bien ofrece algunas ventajas, hay una curva de aprendizaje. Si bien las dos son opciones populares, ofrece algunas ventajas sobre Apache, una sería una huella de memoria más pequeña. Sin embargo, un Apache caído delgado que ejecuta PHP-FPM tendrá una huella de memoria similar.
Caso en punto:
Para ayudar a facilitar esta salida:
El uso de un CDN para ayudar a aliviar cualquiera de las dos cosas obviamente ayudará, pero tendrá un beneficio adicional en la optimización de la interfaz ya que la mayoría de los navegadores de los usuarios finales podrán conectarse a ambos servidores con el mismo número de límites de conexión. Esto también libera a Apache de no tener que pasar por las verificaciones y solo para servir una imagen estática simple. Lighthttpd es una opción si desea ejecutar un servidor web estático solo para contenido además de un CDN.
PHP
PHP-FPM y APC. Úselos, elimine los módulos PHP innecesarios o no necesarios que no sean necesarios para Magento.
Código base de Magento
AOE_TemplateHints es excelente para determinar si sus bloques se almacenan en caché correctamente:
AOE_Profiler es bueno para la creación de perfiles, asegúrese de habilitar su creación de perfiles de capa de base de datos (obviamente en un entorno local / de desarrollo). Esto, junto con la herramienta mytop mencionada anteriormente, hace que encontrar SQL con mal comportamiento sea una tarea más fácil.
Módulos de terceros y código personalizado
Algunas buenas prácticas muy buenas para la optimización de Magento son una buena lectura, y tener en cuenta al revisar los módulos de terceros antes de usarlos. (hay muchos de mal comportamiento IMO).
Una herramienta Magniffer de Magento ECG ayudará a identificar fácilmente el código de mal comportamiento basado en el PDF proporcionado anteriormente. Sin embargo, se basa en Symfony / php-parser pero se puede instalar a través de Composer.
Barniz
Como defensor de que Varnish fuera el autor era un desarrollador de kernel de FreeBSD, ofrece algunos tiempos de carga sub segundos secundarios. Sin embargo, si incluso tiene algunas de las más pequeñas diferencias en sus plantillas que no están listas para usar, pasará tiempo configurando barniz / magento para perforar el contenido que necesita. Lo más que he visto será simplemente AJAX'ify los elementos necesarios que no se almacenaron en caché de Varnish.
Hay varios módulos de Magento para ayudar a facilitar esta perforación y almacenamiento en caché:
En última instancia, esto debería estar en el último final de su viaje de optimización, y PUEDE requerir cierta personalización para hacer las cosas bien.
Magento CE FPC
Hasta ahora, el mejor CE FPC que he encontrado es: Lesti :: FPC
es un FPC de código abierto y gratuito para la comunidad muy bien elaborado (todo basado en observadores).
Al final del día, use sus propias pruebas y juicio.
Algunas lecturas adicionales:
fuente
Sé un poco tarde para este hilo, pero si todavía está buscando una solución, es posible que desee considerar el almacenamiento en caché evolucionado . Es el mismo precio que Warp, pero:
Configurar con Varnish es sencillo, solo necesita habilitar una configuración de administrador y usar el .vcl que se encuentra aquí . Tampoco está restringido a que Varnish solo sirva caché cuando no hay cookies como lo hace normalmente; obtiene una tasa de aciertos de caché muy alta.
fuente
Hemos escrito un FPC que es compatible con la nueva clave de formulario Magento 1.8. Caché de página completa de Brim: http://ecommerce.brimllc.com/full-page-cache-magento.html
BOOMER hace un gran punto sobre comenzar bajo en la pila y avanzar hacia arriba. Un FPC o Barniz debería ser lo último que hagas. Realizamos auditorías de rendimiento y comúnmente encontramos problemas con las configuraciones de MySQL y APC que están realmente apagadas. Al igual que los tamaños de búfer Innodb establecidos en el valor predeterminado y la base de datos ha crecido mucho más allá.
Recomendamos no usar ningún FPC con Barniz, a menos que esté específicamente diseñado para trabajar en conjunto. En general, no recomendamos Varnish a menos que tenga un puñado de servidores robustos que se hayan sintonizado junto con su base de código y aún tengan dificultades para mantenerse con el tráfico. Actualizar contenido dinámico puede ser complicado con Varnish específicamente cuando se trata de limitar sus solicitudes al backend de Magento y, a su vez, reducir la carga. Si tiene uno o dos cabezales web, las ganancias pueden no valer la pena el tiempo y la complicación.
En la mayoría de las situaciones, un buen FPC le proporcionará el rendimiento que necesita, por supuesto, después de que su servidor y su base de código se hayan ajustado. Con nuestro FPC puede obtener tiempos de generación inferiores a 15 ms en el caché de nivel 1 y sub 100 ms en el caché estándar. Nuestro caché de nivel 1 se usa para casos en los que el usuario no ha iniciado sesión y no tiene nada en su carrito, ya que no hace perforaciones. Cuando cualquiera de esas condiciones es falsa, el caché estándar se usa con soporte de perforación total.
Nuestro FPC tiene una perforación fácil incorporada y funciona con todos los bloques Magento estándar, así como cualquier bloque personalizado que pueda tener. Todo es configurable a través del panel de administración.
Recomiendo quedarse con Redis a menos que tenga problemas de escala con él. Tiene soporte de etiquetas y es mucho más rápido que memcached con archivos o bases de datos como backend lento. Si desea etiquetas y limpieza consistentes, debe usar memcached con base de datos cuando tiene varios cabezales web. Con el soporte de etiquetas de Redis incorporado, no tiene que preocuparse por eso. También puede usar Redis para sus sesiones.
Puedo hablar por todos los FPC, pero con los nuestros, puede configurar a través del administrador dónde almacenarlo. Puede elegir usar el backend de caché de Magento predeterminado o especificar configuraciones personalizadas para usar File, Database, APC, Redis, Memcache y un backend de archivo optimizado.
fuente
No hay una respuesta correcta. Una tienda debe tener cargas de página dinámicas inferiores a 3 segundos e idealmente cargas de páginas dinámicas de 1 a 2 segundos, no es necesario menos de un segundo y es principalmente una estadística impulsada por el marketing. Apache es fácil de aprender y difícil de realizar, Nginx es difícil de aprender y fácil de realizar, muchos sitios se están mudando a Nginx, sin embargo, tener una arquitectura de alta calidad basada en Nginx y Magento no es simple.
Los clústeres Magento multiservidor ya son complejos de implementar, y aún más difíciles de mantener si no están en la arquitectura correcta, normalmente trabajamos con clústeres más grandes, lo que hace que todo funcione sin problemas, incluida la clasificación. Hacemos esto con la configuración de instalación estándar con cambios menores para la estabilidad a mediano y largo plazo, orientada a las cargas de página dinámicas de 1-2 segundos, lo que simplifica mucho el mantenimiento.
El barniz puede ser un FPC, CDN entre otros, sin embargo, en su caso, es mejor considerarlo como un FPC. Un FPC permite más visitantes en el servidor y proporciona una entrega estática más rápida, de la cual Varnish es una de esas herramientas, sin embargo, tiene varios problemas, incluido el contenido dinámico, el control de stock y los precios. La respuesta se reduce a cómo está estructurado su negocio, cómo se cargan sus datos, con qué frecuencia, su tipo de alojamiento y más, simplemente su negocio se ve afectado al proporcionar contenido estático a los visitantes. Técnicamente, puede mitigar gran parte de esto con la configuración de FPC, sin embargo, complica el entorno empresarial, desde la perspectiva del propietario del negocio, puede no producir un retorno equilibrado de la inversión.
El FPC es la última parte si tiene una carga dinámica inferior a 3 o mejor, su arquitectura puede manejar la amplitud de las solicitudes de los visitantes, ya que esto afecta la clasificación, absorbe los picos de marketing y vacaciones, y tiene el presupuesto para agregar complejidad en la arquitectura del servidor: el alojamiento debe ser 0.5 -1% de los ingresos para las empresas más pequeñas, la mayoría se ejecutan sustancialmente por debajo de este causando muchos problemas comerciales indirectos.
La razón por la que no ha encontrado una respuesta definitiva se debe al hecho de que esas preguntas tardan meses en responder ya que son cualitativas (basadas en el negocio) que requieren información que una empresa no querría publicar públicamente, las velocidades de carga de la página son cuantitativas (basadas en la técnica ) que puede publicarse, es la forma en que combina los dos lo que hace la solución.
fuente
Puede usar este caché de página de Magento que se adaptará a sus necesidades y es similar al barniz. Es utilizado por muchas de las tiendas Magento más grandes. Algunas caracteristicas:
Como caché multinivel, es escalable incluso para las tiendas de mayor tráfico y se ha utilizado en muchos sitios de tráfico extremadamente alto que reciben tráfico máximo, como las tiendas que se muestran en SharkTank (programa de televisión)
fuente