Hemos estudiado muchos foros y no sabemos la respuesta a lo siguiente. Tenemos ambos APC
e Memcache
instalados en nuestros servidores. No estamos seguros de cuál es la configuración correcta y mejor.
Mi pregunta
¿Cuáles son / son las mejores configuraciones para ejecutar Magento utilizando tanto Memcache + APC al mismo tiempo? (¿O no es esto inteligente en absoluto)
Investigación de fondo
Aquí se recomienda Memcache y APC como caché rápida y lenta (pero sin disco). Parece que esto solo funciona cuando tienes suficiente RAM (y seguro)
Y este artículo trata sobre Memcache o APC, y tenemos ambos
Y aquí dice que Memcache solo funciona realmente cuando también tienes un backend lento definido
Y creo que este artículo dice lo mismo
Esta es la solución de mi ISP para local.xml
<cache>
<backend>apc</backend>
<prefix>sitenamehere__</prefix>
</cache>
<cache>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host><![CDATA[127.0.0.1]]></host>
<port><![CDATA[11211]]></port>
<persistent><![CDATA[1]]></persistent>
</server>
</servers>
<compression><![CDATA[0]]></compression>
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
</memcached>
</cache>
Situación
Alojamiento compartido Brim FPC instalado: http://ecommerce.brimllc.com/full-page-cache-magento.html (este FPC también tiene un caché de archivos escalable para hacerlo más complejo)
Respuestas:
Debe comprender la clara distinción entre estos dos productos para comprender cómo usarlos.
Uso de APC como caché de OPCode
Simplemente instale el módulo en su servidor
Y habilítalo en tu
php.ini
Luego habilita y ajusta la configuración de tiempo de ejecución para adaptarla, por ejemplo.
Luego reinicie PHP / Apache
Después de eso, no hay nada más que hacer. Confirme que APC está habilitado con un rápido
phpinfo()
, pero de lo contrario, en este punto, la porción de caché OPCode de APC está activa.No es necesario configurar nada del lado de Magento.
Usando APC como un backend rápido
Necesita agregar lo siguiente a su
./app/etc/local.xml
Luego, vacíe los cachés de su tienda existente. Para verificar que funciona, cargue una página en el front-end y el
./var/cache
directorio debe permanecer vacío.Usando Memcache como un backend rápido
Deberá instalar Memcache como una extensión PHP e instalar el respectivo Memcache Daemon (Memcached) en su servidor.
Y habilítelo en su php.ini
Luego instale Memcached en el servidor. Para RH / Centos, ajuste la URL para adaptarla a su versión de lanzamiento y arquitectura de CPU.
Luego modifique Magento para usar Memcache como un backend rápido, cambie la ruta del socket a una conexión TCP / IP para adaptarla.
Las advertencias de Memcache y el etiquetado: ¿qué está almacenando?
Memcache solo admite un solo nivel de relaciones clave-valor, por lo que no puede almacenar las etiquetas de caché de Magento (que se utilizan para vaciar los datos de caché de forma independiente). Como resultado, debe especificar a
slow_backend
para mantener la relación de la etiqueta de contenido de la memoria caché o no definir ninguna.Si define a
slow_backend
, corre el riesgo de que las etiquetas de caché crezcan tanto que se niegue el rendimiento; También existe el problema inherente de que no puede escalar en varios servidores si cada servidor mantiene sus propias etiquetas de caché.Por lo tanto, cuando se usa Memcache, el mejor enfoque (con la advertencia de que no puede vaciar las cachés de forma independiente), es no molestarse en usar el
slow_backend
.En cuyo caso, sugerimos eliminarlo
<slow_backend>database</slow_backend>
y reemplazarlo con:Esto interrumpirá / deshabilitará el segundo nivel de almacenamiento en caché (y evitará el almacenamiento de etiquetas), pero aún permitirá el rendimiento de Memcache.
Cual usar
Si se trata de una implementación de un solo servidor , no hay nada malo en usar APC para todo.
Si se trata de una configuración distribuida , deberá usar Memcache como el backend rápido (para que todas las máquinas puedan acceder a la tienda común).
Más preocupante es que si su proveedor de alojamiento no puede indicarle la configuración correcta para usar, ciertamente está con el host incorrecto.
Atribuciones: sonassi.com , php.net , repoforge.org
fuente
slow_backend must implement the Zend_Cache_Backend_ExtendedInterface interface
en Mage 1.7.0.2Estoy bastante de acuerdo con las respuestas anteriores, pero aquí hay una pequeña precisión para completarlo: Sí, apc se puede usar como un motor de almacenamiento en caché y como un optimizador de código de bytes PHP. Pero hay que aclarar dos puntos:
Como backend rápido, las directivas de configuración utilizadas por APC para comprender cómo debe guardar los datos se administran a través de las directivas apc.user_%. Los otros solo se refieren a la memoria caché de código de bytes (por ejemplo, apc.ttl: la duración de vencimiento de la memoria caché de código de operación, apc.user_ttl: la duración de vencimiento de los datos almacenados en caché por su Magento).
Y como un backend rápido, APC tiene exactamente el mismo comportamiento que memcached: no administra las etiquetas de caché, y para Magento requiere un backend lento configurado (o usa de manera predeterminada el archivo backend lento).
Según mi experiencia, en sitios web con mucho tráfico, si usa apc solo como optimizador de código de bytes, necesita entre 96 y 256Mo en el valor de configuración apc.shm_size. También aumente apc.num_files_hint de 1000 a 15000: de forma predeterminada, el código de bytes de caché de apc solo almacena 1000 archivos y Magento contiene alrededor de ~ 20,000 archivos PHP y PHTML de forma predeterminada (
find . -type f -name "*.php" -o -name "*.phtml" | wc -l
). Personalice este valor con su código fuente.Si usa APC o memcached como back-end rápido, es difícil proporcionarle algunos consejos sobre la memoria requerida: realmente depende de la política de caché aplicada en su instancia.
Por ahora, su configuración de caché funciona así:
¿Por qué estos dos niveles de gestión? Memcached y otros backends rápidos son almacenamientos de memoria. Por lo tanto, significa que los datos pueden corromperse o desaparecer.
¿Cómo puede aumentar el rendimiento de esta configuración?
Desactivar la segunda escritura es probablemente una de las opciones más eficientes. Esto se explica en el cuarto artículo que mencionaste. Pero no puede usar sin modificaciones el código fuente de slow_backend_store_data. En su contexto, no recomiendo realizar esta personalización por los siguientes motivos: sus datos almacenados en caché nunca serán controlados. Almacenará datos en la memoria, obtendrá rendimiento, pero tal vez envíe a sus visitantes un contenido no válido. Por lo tanto, debe encontrar una solución que le garantice tener acceso a la memoria (para un mejor rendimiento), control de escritura y la capacidad de deshabilitar el almacenamiento en caché de slow_backend_store_data. Puede llegar a este contexto de la siguiente manera:
reemplace el servidor memcached por uno redis (redis puede controlar la lectura y escritura como lo hace un sistema de archivos) y continúe usando apc como optimizador de código de bytes
* asegúrese de que puede usar la opción slow_backend_store_data * ya sea personalizando su código fuente o bien cambiando a un backend lento de base de datos (sí, aumenta la carga de su servidor de base de datos, pero si su política de caché está bien definida, no debería un problema)
* Desactivar la opción slow_backend_store_data * : en esta configuración ya no es necesario, tienes el control de lectura y escritura realizado por redis.
fuente
Como nota adicional a esto, descubrimos que cuando se usa APC con Magento (para el almacenamiento en caché del código de operación, usamos Redis para la página convencional de Magento y el almacenamiento en caché de bloque), entonces es importante asegurarse de que la configuración de estadísticas sea 0 en producción (pero 1 en desarrollo):
La configuración apc.stat se usa para determinar si se debe verificar un script en cada solicitud para determinar si se ha modificado ( http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat ) y, por lo tanto, establecer esto en 0 en un entorno de producción traerá el beneficio de rendimiento de que APC no realice esta verificación con cada solicitud.
Vale la pena señalar que una vez que apc.stat se establece en 0, es probable que tenga que reiniciar el proceso de su servidor web para recoger los cambios de archivos (es decir, después de la implementación), pero esto debería ser parte de su estrategia posterior a la implementación de todos modos.
fuente
Lo mejor que hicimos para acelerar el backend de manera significativa es instalar REDIS como un controlador de caché . Ahora también es compatible con el núcleo de Magento 1.8 y superior.
Nada se compara ... ahora es click click clickerdy click
http://www.magentocommerce.com/knowledge-base/entry/redis-magento-ce-ee
Además, podría considerar agregar la extensión de sesión Redis para también agregar sesiones al servidor de memoria redis ...
¡Buena suerte!
fuente
Desde este archivo local.xml, Magento recogerá la última entrada y usará Memcache. Creo que hay una confusión entre cómo APC y Memcache pueden trabajar con Magento.
Primero, APC tiene 2 usos:
Memcache, por otro lado, es solo un almacén de clave / valor. La gran ventaja de Memcache es que puede funcionar en modo cliente-servidor, por lo que varios servidores frontend pueden usar la misma caché, lo cual es imprescindible si tiene varios servidores que sirven al mismo sitio web.
La configuración más común es instalar APC para obtener el almacenamiento en caché del código de operación (para obtener una ejecución de script ~ 25% más rápida) y usar Memcache como servidor de caché. También utilicé APC como sistema de caché y, aunque en teoría debería ser un poco más rápido que Memcache, no se puede notar la diferencia.
fuente