Magento Chile Desarrolladores Magento

¿Tienes una pregunta?

Si usted tiene cualquier pregunta, escriba a continuación lo que está buscando!

XCACHE Magento – Más aceleración


Acelara tu Magento
XCache se autodescribe como un cacheador de opcode PHP que es rápido, estable, muy probado y que se usa en servidores en producción con muchas visitas. El aumento del rendimiento se nota: sólo tenemos que pensar que en lugar de interpretarse los scripts PHP cada vez y ejecutar el código, directamente se ejecuta el código ya interpretado que está en caché. (fuente)

1.- Asegúrate de que XCache ya está instalado en tu servidor y pon esto por ssh:

CÓDIGO:

php -v

Y te debe salir esta ventana:

PHP 5.1.6 (cli) (built: Nov 20 2007 11:11:52)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with XCache v1.2.1, Copyright (c) 2005-2007, by mOo

Debes ver la línea

“XCache v1.2.1, Copyright (c) 2005-2007, by mOo”

Nota: Los usuarios alojados en nuestro servidor (dv) Server Extreme de Media Temple, NO deben instalarlo ya que este fue instalado satisfactoriamente.

2.- Para instalarlo deben hacer lo siguiente:
Por ssh instalar así:

CÓDIGO:

yum install php-devel
wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
tar -zxf xcache-*.tar.gz
cd xcache-*
phpize
./configure --enable-xcache
make
make install

Asegurarse que el archivo generado “xcache.so” está en el directorio de módulos de php necesario (puede ser /usr/lib/php/modules o bien otro)

3.- Añadir la siguiente configuración al php.ini (si lo metemos como archivo INI en /etc/php.d/ no podremos controlar el orden de cargado y no funcionará):

CÓDIGO:

[xcache-common]
zend_extension = /usr/lib/php/modules/xcache.so

[xcache.admin]
xcache.admin.user = "admin"
xcache.admin.pass = "md5password"

[xcache]
xcache.shm_scheme =        "mmap"
xcache.size  =                64M
xcache.count =                 1
xcache.slots =                8K
xcache.ttl   =                 0
xcache.gc_interval =           0
xcache.var_size  =            12M
xcache.var_count =             1
xcache.var_slots =            8K
xcache.var_ttl   =             0
xcache.var_maxttl   =          0
xcache.var_gc_interval =     3000
xcache.test =                Off
xcache.readonly_protection = Off
xcache.mmap_path =    "/dev/zero"
xcache.coredump_directory =   "/tmp/xcache"
xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           Off

[xcache.coverager]
xcache.coverager =          Off
xcache.coveragedump_directory = ""

3.1.- Fijate que cuando estás editando tu php.ini con los valores de más arriba en: xcache.admin.user = “admin”
xcache.admin.pass = “md5password” debes poner tu “admin” (por ejemplo admininistrador) y en “md5password” debes poner tu contraseña genera necesariamente en md5 en la página oficial de md5 http://md5.rednoize.com/ donde por ejemplo “hola” es igual a “4d186321c1a7f0f354b297e8914ab24” y debes ponerlo entre las comillas tu contraseña elejida, tal cual aparece aquí. Bueno ahora grabas tu php.ini.

3.2.- Luego fijate cuando descomprimiste a Xcache (punto 2) te quedó una carpeta llamada “xcache-1.2.2” ok?

a) Create un directorio o carpeta del admin de Xcache en tu sitio por ejemplo asi por ssh:

CÓDIGO:

mkdir /var/www/vhosts/tisitio.cl/httpdocs/admin

b) Luego entra a la carpeta llamada “xcache-1.2.2” por ssh así:

CÓDIGO:

cd xcache-1.2.2

y haces el comando “ls” para listar, verás que dentro de ella está la carpeta de “admin” ok? solo veela no entres ahí (solo quédate donde estás, en la carpeta “xcache-1.2.2”).

c) Ahora copia todos los que esta dentro de ella a la carpeta o directorio creado por ti en “/var/www/vhosts/tisitio.cl/httpdocs/admin” que creaste en el punto a) por ssh así:

CÓDIGO:

cp -R admin/* /var/www/vhosts/tisitio.cl/httpdocs/admin

d) Con esto que hemos realizado veremos que tenemos todo el control de nuestro Xcache y saber exactamente lo que se esta cacheando, cuando veas las estadísticas en http://www.tusitio.cl/admin (antes debes reiniciar Apache. pto 3.2), Cuando entres a tu admin te pedirá el usuario y la password en md5, pero debes escribirla normal como en nuestro ejemplo que la password era “hola” se debe escribir “hola” y NO en md5 (4d186321c1a7f0f354b297e8914ab24) ya que eso es uso interno de los script de Xcache.
admin Xcache
3.3.- Debes reiniciar Apache:

CÓDIGO:

 /etc/init.d/httpd restart

4.- Asegúrate de que XCache funciona y pon esto por ssh:

CÓDIGO:

php -v

Y te debe salir esta ventana:

PHP 5.1.6 (cli) (built: Nov 20 2007 11:11:52)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with XCache v1.2.1, Copyright (c) 2005-2007, by mOo

Debes ver la línea

“XCache v1.2.1, Copyright (c) 2005-2007, by mOo”

5.- Ahora hacemos que comience el cacheo en Magento:

Nos vamos app/etc/local.xml y ponemos lo siguiente:

Justo antes de que acabe “</global>”:

CÓDIGO:


            
xcache
xcache



Aca les dejo mi app/etc/local.xml para que tengan una mejor referencia o ejemplo real:

CÓDIGO:

<?xml version="1.0"?>


    
        
            <![CDATA[Sun, 15 Aug 2010 03:14:03 +0000]]>
        
        
            <![CDATA[acdfed75a88854b22542df044d469211]]>
        
        false
        
            
                <![CDATA[]]>
            
            
                
                    <![CDATA[localhost]]>
                    <![CDATA[usuariobasedatos]]>
                    <![CDATA[mipassworddebasedadatos]]>
                    <![CDATA[nombrebasededatos]]>
                    1
                
            
        
        <![CDATA[db]]>
       
      
       
            
xcache
xcache

 

   
 
        
    
    
        
            
                
                    <![CDATA[admin]]>
                
            
        
    

6.- Luego vaciamos la carpeta cache que está dentro de la carpeta var por ssh así:

CÓDIGO:

cd /var/cache
CÓDIGO:

rm -rf mage*

o por ftp borrar entera las carpetas con el nombre mage–0 mage–1, etc
No olvidar este punto porque o si no nuestra tienda caerá al piso mandando 2 tipos de error, que puede ser sobre “fast_backend must implement the Zend_Cache_Backend_ExtendedInterface interface- Wrong error message in Zend_Cache_Backend_TwoLevels Exception – Zend Framework Issue Tracker” o “Currency ‘USD’ not found”.
7.- Luego damos mas memoria a nuestra carpeta var, por comando ssh:

a) Primero paramos los servicios:

CÓDIGO:

service httpd stop

b) Luego le asignamos mas memoria a nuestra cache de magento:

CÓDIGO:

mount tmpfs /var/www/vhosts/wakeup.cl/httpdocs/rut/var/cache -t tmpfs -o size=64m 

c) Reiniciamos los servicios:

CÓDIGO:

service httpd restart

7.1.- Edita tu my.cnf por ssh así (si no sabes el comando vi… leete el manual de comandos de ssh aquí:

CÓDIGO:

vi /etc/my.cnf 

CÓDIGO:

CÓDIGO:

query-cache-size = 64M

7.2 Reinicia mysql:

CÓDIGO:

/etc/init.d/mysqld restart 

8.- Si analizamos la situación objetivamente o mejor seamos prácticos y vamos al grano en lib/Zend/Cache/Backend
veremos a Xcache.php que interactua con todo lo que hemos realizado, si por ejemplo quitan la declaración fast_backend en local.xml

Veran que se activará un mensaje de error pidiendo que se active fast_backend y este viene directamente del archivo lib/Zend/Cache/Backend/TwoLevels.php
Así es como sabemos que Xcache esta funcionando correctamente. Ahora si algún Magentero sepa como medir mejor la cantidad de cacheo o testear con gráficos una tienda Magento con y sin Xcache, será bienvenido… por que a mi no me basta que Varien lo diga en un gráfico “lindo” lo quiero ver con mis propios ojos los gráficos subiendo y bajando.

9.- Todo lo que hicimos lo va a leer app/code/core/Mage/Core/Model/Cache.php donde están declarados “apc” “memcached” y “xcache”.

Este Wiki recopiló muchisima información de muchas parte del mundo, pero en ninguna parte aparecia como configurar Xcache para Magento (solo algunos aproximaciones erradas), Pero se realizó seriamente y en varias tiendas Magento de prueba (sin conjeturas) para realizar un guía detallada al máximo, sin ensayos ni posibles… si no que con un funcionamiento real. Ojala alguién nos pueda meter nuestro trabajo al laboratorio y ponerlo a prueba.

Bueno eso es todo… nuestro Magento es todo un macho cabrio Cacheador! con Xcache

Tienda con Xcache:
http://www.magentochile.cl/dvex

Nota: Los usuarios alojados en nuestros servidor (dv) Server Extreme de Media Temple, NO deben instalar Xcache en el servidor ya que este fue instalado satisfactoriamente, pero si deben declarar, si lo desean, en app/etc/local.xml lo ya mencionado.

Boris D.

XCACHE Magento – Más aceleración
Califica este Wiki

Comentarios

Comentarios

(5) Comments

  1. Hola Rolando,

    Gracias por el aporte… se ve muy interesante… pero quiero saber más… entiendo muy bien el concepto del rendimiento que debe tener magento y en las cargas pesadas la simplicidad es la respuesta. Quiero saber más como sobre esas sentencias optimizadas… donde pones ese código??? en un módulo propio que has creado o adquirido?? tienes un ejemplo para poner en práctica…???

    Boris D.

  2. Los catalogos actualmente se generan una vez y se cachan, pero que sucede si nuestra tienda, tiene sistemas de membresias, puntos u ofrece webservices para puntos de ventas de terceros.

    Es en esas situaciones donde talvez utilizar el orm nativo de magento y cargar colecciones de datos nos podria producir sobrecargas, por eso sugiero utilizar simples sentencias sql con resultados cachados.

    En realidad es una tecnica vieja, solo muestro como se usa en el contexto de magento.

  3. Hola Boris! Hablo solamente un poquito Espanol pero vamos. He hecho todo lo que querio es necessario usando su explicacion en un server VPD con Dreamhost – cambio el codigo en local.xml, cache.php y vaciamo la carpeta cache pero todavia encuentro errores como
    :4:{i:0;s:78:”fast_backend must implement the Zend_Cache_Backend_ExtendedInterface interface”;i:1;s:1489:”#0 /home/user/prelaunch.domain.com/includes/src/Zend_Cache_Backend_TwoLevels.php(153): Zend_Cache::throwException(‘fast_backend mu…’)
    #1 /home/user/prelaunch.domain.com/includes/src/__default.php(62384): Zend_Cache_Backend_TwoLevels->__construct(Array)
    #2 /home/user/prelaunch.domain.com/includes/src/__default.php(62325): Zend_Cache::_makeBackend(‘TwoLevels’, Array, true, true)
    Y ya no comprendo porque. Es quizas porque el nuevo version Magento 1.9.1.0 no es el mismo o?

  4. Hola rhand,
    Debes deshabilitar tu cache antes de modifical el local.xml con el código xcache. Una vez hayas deshabilitado la cache, ahí recien le ingresa el código al local.xml. Luego haces un flush cache y refrescar la cache y ahí recién habilitas la cache nuevamente.

    Now in english:
    Hello rhand,
    You must disable your cache before modifical the local.xml with xcache code. Once you have disabled the cache, there will newly enter the code to local.xml. Then you do a cache flush and refresh the cache and cache enable newly there again.

    Regards,
    Boris D.

Leave a Reply

You must be logged in to post a comment.