Optimizar Magento en la nube

En este tutorial de seguimiento, optimizaremos Magento, agregaremos un alias de Redis, SSL y DNS, y luego escalaremos la aplicación para la evaluación comparativa y la producción. Lo siguiente asume que ya ha utilizado el primer tutorial para iniciar una aplicación de nube Magento básica en Pagoda Box. Listo para optimizar?


Requerimientos

Puede descargar el código terminado para este tutorial, o instalar Magento desde un Inicio rápido para probar un sitio de trabajo.

  • Cuenta de Pagoda Box (gratis)
  • Una instalación de Magento local funcional.
  • Software de desarrollo local (MAMP o WAMP)
  • Git instalado (puede usar SFTP)
  • El cliente de Pagoda Terminal instalado

Aviso justo: Pagoda Box no es un hosting tradicional. Este tutorial no solo optimiza Magento, sino que también sienta las bases para un flujo de trabajo de integración continuo y progresivo..


Paso 1: habilitar eAccelerator, XCache o APC Cache

La habilitación de un Bytecode Cache optimizará el rendimiento, especialmente con grandes bases de código como Magento. Puede usar eAccelerator o XCache bytecode caching, pero Magento recomienda APC. Para habilitar APC, simplemente agréguelo a la lista de extensiones php en el archivo de Box de la siguiente manera:

 web1: extensiones_pp: - apc

Tu nuevo archivo de caja debería verse así:

 web1: nombre: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap - apc after_build: - "mv pagoda / local .xml aplicación / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1: name : tipo mag-db: mysql

Paso 2: crear un componente redis

De forma predeterminada, las sesiones de Magento en Pagoda Box están ubicadas en un almacenamiento grabable y son accesibles para todas sus instancias web. Este tutorial mueve las sesiones a Redis, que es un "almacén avanzado de clave-valor". Redis proporciona un almacenamiento en memoria caché extremadamente potente, junto con datos persistentes para un mejor rendimiento de lectura, escritura y sesión..

Crear un Caché Redis desde el archivo de cuadro

Primero, habilite la extensión Redis agregando - Redis a la lista de extensiones en el archivo de Box, tal como lo hicimos para APC. Esto permite que sus componentes PHP se conecten con Redis. También agregue un componente de caché Redis a su archivo de Box de la siguiente manera:

 cache1: nombre: mag-cache tipo: redis

Su archivo de caja actualizado debería verse así:

 web1: nombre: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap - apc - redis after_build: - "mv pagoda /local.xml aplicación / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1 : nombre: mag-db tipo: mysql cache1: nombre: mag-cache tipo: redis

Cuando se incluye un componente Redis en el archivo de Box, se agrega automáticamente un caché de Redis a su infraestructura cuando implementa las actualizaciones.

Alternativo: Crea un Caché Redis desde el Tablero

También puede crear un caché Redis desde el Panel de Pagoda Box. El Panel de control también es donde se escala el componente Redis..

Primero, haga clic en "Agregar caché" en el Panel de control.

… Luego elige Redis.

Una vez que se haya implementado su nuevo componente de caché, haga clic en él en el Panel, luego elija la cantidad de RAM que prefiera de la siguiente manera:

Los datos son persistentes con Redis, por lo que puede cambiar el tamaño del caché sin perder sesiones o almacenar en caché los datos almacenados en la memoria, a diferencia de Memcache.


Paso 3: Configurar Magento para Redis Sessions y Cache

Este tutorial comparte un único componente de Redis para las sesiones de Magento y el almacenamiento en caché. Si su sitio recibe suficiente tráfico, la creación de un componente Redis separado para ambas sesiones y el almacenamiento en caché puede proporcionar una medida adicional del rendimiento.

Sesiones de Redis

Configurar sesiones de magento para usar redis.

Si alguna vez necesita anular los archivos predeterminados de Magento (como lo haremos aquí), no modifique los archivos centrales de Magento. Los archivos de anulación siempre deben residir en el Directorio Local de Magento para proteger la funcionalidad y futuras actualizaciones.

  • Edita la sección del controlador de sesión de tu local.xml Archivo para usar Redis, y establezca la ruta para guardar la sesión de la siguiente manera:

      
  • A continuación, agregue el soporte de Redis a Magento anulando un archivo Magento central. Copia el archivo:

     app / code / core / Mage / Core / Model / Session / Abstract / Varien.php

    Luego crea tu propia versión local en:

     app / code / local / Mage / Core / Model / Session / Abstract / Varien.php

    En el nuevo archivo, alrededor de la línea 62, agregue lo siguiente:

     caso 'redis': ini_set ('session.save_handler', 'redis'); session_save_path ($ this-> getSessionSavePath ()); descanso;

Redis Cache

Ahora, configure el caché de Magento para usar Redis, también.

  • Agregue la biblioteca Credis y el módulo Cm para habilitar Redis como un caché de Magento. El módulo consta de un archivo, que puede descargar aquí. Aunque el autor del módulo Cm recomienda la instalación a través de modman, modman no registra correctamente todos los submódulos con Pagoda Box. En su lugar, guarde el archivo como: app / code / community / Cm / Cache / Backend / Redis.php.

    Agregue la biblioteca de Credis como un submódulo de Git a su proyecto:

     $ cd your_site_dir $ git submodule add git: //github.com/colinmollenhour/credis.git lib / Credis
  • Una vez más, edita el local.xml expediente. Cambie la eliminación de caché y su contenido de la siguiente manera:

      Cm_Cache_Backend_Redis  tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip  
  • El futuro lejano establecido para reducir drásticamente el número de solicitudes por visitante a medida que navegan por su sitio. Haga esto después de terminar el trabajo del tema frontend. Añadiendo lo siguiente static_expire directiva a la web1 La sección de su archivo de Box caducará los cachés de activos estáticos después de 1 año..

     web1: static_expire: 31536000
  • Agregue los archivos actualizados a git, commit y presione a Pagoda Box.

     $ git añadir. $ git commit -m 'instalado y configurado redis' $ git push pagoda --todos
  • Después de la implementación, borre la memoria caché del sistema Magento iniciando sesión en su administrador de Magento y dirigiéndose a Sistema -> Administración de caché, luego haga clic en 'Limpiar caché Magento'.

NOTA: Evite JS y CSS en almacenamiento grabable

Magento tiene algunas utilidades de optimización que combinan archivos javascript y css, luego los colocan en el almacenamiento de escritura compartido de Pagoda Box. La mayoría de las veces, eso no es un problema, pero con un gran volumen de tráfico, Pagoda Box puede acceder a los archivos desde las instancias web distribuidas mucho más rápido que los archivos en el almacenamiento de escritura compartido. Para un alto rendimiento de tráfico, mantener javascript y css en la repo supera a la minificación.

Para desactivar la fusión de archivos, inicie sesión en el panel de administración de Magento, luego navegue hasta: Sistema> Configuración> Desarrollador

Elija "No" en Configuración de JavaScript y Configuración de CSS de la siguiente manera:


Paso 4: Verificar que Redis está funcionando

Ahora que Magento está configurado para Redis, verifique que todo esté funcionando. Siga esta guía de Redis para establecer un túnel seguro, luego use la terminal para acceder a Redis en Pagoda Box. Una vez conectado, ejecute el siguiente comando para mostrar una lista de todas las claves almacenadas.

 $ llaves *

Suponiendo que haya navegado por el sitio publicado, debería ver una lista de claves surtidas. Si solo ve claves de sesión, solo claves de caché, o si no ve ninguna clave en absoluto, revise sus ajustes de configuración y asegúrese de que haya borrado el caché de Magento.

Para obtener una lista completa de comandos útiles al usar Redis, consulte su documentación oficial.


Paso 5: Agregar DNS / SSL

Piggyback SSL es gratuito y automático para todas las aplicaciones en Pagoda Box en el subdominio de su aplicación (appname.pagodabox.com). Si bien es posible realizar una prueba comparativa utilizando Piggyback SSL, habilitaremos SSL de terceros para los fines del tutorial. Los certificados de comodín y los SSL autofirmados se detallan en esta guía de DNS / SSL.

Añadir SSL

Comience haciendo clic en el botón "Agregar un certificado SSL" debajo de la pestaña DNS / SSL en el tablero de Pagoda Box.

A continuación, elija si está creando un certificado o utilizando un certificado SSL existente, ya que estamos aquí. Suponiendo que tenga un certificado existente, haga clic en "Transferir existente".

Finalmente, pegue la información relevante en el campo apropiado y active. Su certificado SSL ahora se guarda con su aplicación.

Añadir un alias de DNS

Una vez que haya ingresado un certificado SSL, aparecerá en su lista de certificados SSL disponibles. Si aún no lo ha hecho, agregue su dominio personalizado como un alias de DNS a su aplicación. Haga clic en "Agregar nuevo alias" e ingrese su dominio registrado como el alias. Pagoda Box asignará una dirección IP compartida de forma predeterminada, pero esto cambiará cuando asocie un certificado SSL con el Alias ​​de DNS.

Finalmente, asocie su certificado SSL con su alias de DNS seleccionándolo de la lista desplegable de SSL junto a su alias de DNS, luego haga clic en "Guardar". Con el certificado SSL ahora vinculado a su alias de DNS, su alias obtiene una dirección IP exclusiva y exclusiva.

Una vez que asocie un certificado SSL con un alias de DNS, ese alias obtendrá una dirección IP dedicada. Asegúrese de verificar que su registro A coincida con la IP proporcionada después de agregar, eliminar o modificar sus certificados SSL.


Paso 6: Benchmark con Blitz.io

Hemos utilizado Blitz.io para evaluar algunas aplicaciones de Magento. Prueba las respuestas de http y las escrituras de la base de datos utilizando URLs y cookies de listas variables.

Para empezar, crea una cuenta gratuita en Blitz.io. Una vez que se haya registrado, busque "¡COMIENZO!" botón en la parte inferior de su página de bienvenida.

Haga clic en "Inicio", y Blitz proporcionará una serie de tutoriales sencillos que explican las variables que utilizará en una URL de consulta para probar su aplicación. Para nuestros propósitos, la URL de consulta básica debería tener este aspecto:

 -p 1-24: 60 -r california -T 4000 -v: lista de cookies [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: urls list [index.php, furniture.html, ottoman. carrito / agregar? producto = 51] -b "my-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls

Específicamente, esa consulta probará gradualmente 1-24 visitantes simultáneos (se puede probar a 250 con una cuenta gratuita) durante 60 segundos, desde California, con un tiempo de espera de 4 segundos. La consulta también establece una lista de cookies y URL como variables, más el dominio que estamos probando. Hemos incluido una página de inicio, una página de CMS, una página de catálogo, una página de producto y una página de pago para probar.

El uso de variables de cookie y una URL de producto de checkout / cart / add? Nos permite probar las escrituras de DB. Obtenga una lista de cookies válidas navegando por su sitio en Chrome> Inspeccionar elemento> Recursos> Cookies> [su sitio]> frontend. Copie la clave de la columna Valor, como se indica a continuación:

Reemplace las cookies, las URL y el dominio de la consulta de URL anterior con los elementos apropiados de su sitio, luego ingrese la nueva consulta en Blitz.io y haga clic en "Ejecutar".

La primera vez que "apresure" su aplicación, Blitz mostrará un error de autorización y le pedirá que demuestre su propiedad agregando una URL específica a su aplicación. Siga las instrucciones de Blitz en pantalla para crear un archivo de autorización único en su computadora local, luego presione los cambios en Pagoda Box.

 $ git añadir. $ git commit -m "blitz auth file" $ git push pagoda --todos

Confirme que el nuevo archivo está en su lugar visitando la URL en un navegador. Deberías ver "42". Tenga en cuenta que la "raíz de su directorio www" es la raíz de su proyecto a menos que haya configurado Raiz del documento en su archivo de caja para ser otro directorio.

Una vez que todo está en su lugar, puedes ajustar las variables de Blitz y probarlas. Por ejemplo, cambiando 1-24 a 60-60 cambiará la concurrencia de un aumento graduado a 24 concurrencia a 60 visitantes concurrentes sostenidos. El aislamiento de direcciones URL en la lista de variables le permite identificar cuellos de botella de rendimiento mediante el aislamiento de varios tipos de páginas. Incluso puede probar la capacidad de escritura de la base de datos utilizando pago / carrito / añadir? url.

Por supuesto, la evaluación comparativa es simplemente un indicador para ayudar a escalar la aplicación. Asegúrese de escalar a varios niveles a medida que realiza una evaluación comparativa, observando el cambio en los resultados (vea el video de Escala de Magento). Blitz.io debe ayudar a identificar los cuellos de botella de la aplicación y determinar la escala adecuada para su tráfico esperado.


Paso 7: Escalado en la caja de la pagoda

Ha habido un poco de trabajo de preparación inicial para llegar a esta etapa, pero aquí es donde todo se junta. La integración continua, la administración continua y la escalabilidad son ahora mucho más simples. Como punto de referencia, tenga en cuenta que los cargos son por hora. La escala para probar brevemente costará solo unos pocos dólares.

Escalado de instancias web

Para escalar su aplicación web para obtener más tráfico, abra su componente web desde el panel de Pagoda Box de la siguiente manera:

Luego, haga clic y arrastre el control deslizante hasta el número deseado de instancias y haga clic en "Guardar". Pagoda Box desplegará Magento desde su repositorio a nuevas instancias. Una vez que se hayan creado y verificado todas las instancias, la capa de enrutamiento redirigirá el tráfico a las nuevas instancias y retirará las antiguas sin ningún tiempo de inactividad (nuevamente, vea el video de Scaling Magento).

Nota: A medida que lo esté utilizando, el control deslizante parece tener un máximo de 25 instancias, pero se restablecerá para una mayor escala después de que se haya guardado el límite superior.

Escalado de una base de datos: nube (los componentes de caché son idénticos)

Para escalar su base de datos en la nube, abra su componente Databsase desde el panel de Pagoda Box de la siguiente manera:

Observe que la cara roja no está contenta porque el uso de RAM es demasiado alto. Para aumentar la RAM, haga clic en la flecha verde "Cambiar", seleccione la cantidad de RAM que desee y haga clic en "Guardar".

Pagoda Box creará una base de datos más grande, migrará los datos, se sincronizará a través de la replicación maestro-maestro y luego dirigirá su aplicación a la nueva base de datos. Su sitio está activo durante toda la migración..

Escalando una base de datos: Privada

Para escalar su base de datos privada, abra su componente Databsase desde el panel de Pagoda Box de la siguiente manera:

Seleccione los recursos que desea para su base de datos, determine si desea replicación, luego haga clic en "Guardar".

Pagoda Box creará una base de datos más grande, migrará los datos, se sincronizará a través de la replicación maestro-maestro y luego dirigirá su aplicación a la nueva base de datos. Su sitio está activo durante toda la migración..

Tenga en cuenta que ordenar una base de datos privada puede demorar más de 20 minutos, ya que un servidor se aprovisiona según sus especificaciones.

Nota: actualmente, la escala de una base de datos en la nube a una base de datos privada requiere un tiempo de inactividad al migrar los datos manualmente. La escala de nube a nube, o privada a privada siempre es automática.


Resumen

¡Eso es! Su aplicación Magento ahora es completamente escalable en un instante y las actualizaciones se implementan fácilmente con $ git push pagoda --todos. Disfrutar!