Estoy demasiado frustrado con el sistema de almacenamiento en caché PHP APC y quería eliminarlo/deshabilitarlo por completo de mi servidor. Estoy usando PHP con Nginx instalado en Debian Squeeze, ¿hay alguna forma de hacerlo?
Respuesta1
En lugar de eliminar APC, lo que provocará unmasivogolpe de rendimiento y efectivamente se dispara en el pie.
Pruebe esto: en /etc/php5/conf.d/apc.ini:
extension=apc.so
apc.shm_size=128M
apc.shm_segments=1
apc.max_file_size=5M
apc.num_files_hint=10000
apc.slam_defense = 0
apc.write_lock=1
Puede aumentar apc.shm_size
a un valor mayor que 128, digamos 512 si tiene suficiente RAM libre.
Hice esto en un servidor que ejecuto y nunca veoNo se puede asignar memoria para el grupoerrores.
Respuesta2
Elimina /opt/php5/etc/conf.d/apc.ini
o comenta todas las líneas con un archivo ;
. No olvide reiniciar su servidor web después.
También marque '/etc//php5/apache2/php.ini' para 'extension=apc.so' para comentar.
Si todavía tiene las fuentes disponibles, puede intentar hacer una make uninstall
después. No sé si el archivo MAKE contiene este objetivo.
Respuesta3
Si no instaló algo además de lo que ofrece Squeeze, un simple apt-get remove php-apc
debería ser suficiente.
Respuesta4
La solución es aumentar la memoria asignada a APC.
Usar un TTL de 0 significa que APC vaciará todo el caché cuando se quede sin memoria. El error ya no aparece pero hace que APC sea mucho menos eficiente. Es una decisión que no implica riesgos ni problemas: "No quiero hacer mi trabajo". APC no debe usarse de esa manera. Debes elegir un TTL lo suficientemente alto para que las páginas más visitadas no caduquen. Lo mejor es proporcionar suficiente memoria para que APC no necesite vaciar la caché.
Simplemente lea el manual para comprender cómo se usa ttl:http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl
Puede aumentar la memoria asignada aumentando apc.shm_size.
Si APC está compilado para utilizar la memoria de segmento compartida, estará limitado por su sistema operativo. Escriba este comando para ver el límite de su sistema para cada segmento:
sysctl -a | grep -E "shmall|shmmax"
Para asignar más memoria tendrás que aumentar el número de segmentos con el parámetro apc.shm_segments.
Si APC utiliza memoria mmap, entonces no tiene límite. La cantidad de memoria todavía está definida por la misma opción apc.shm_size.
Si no hay suficiente memoria en el servidor, utilice la opción de filtros para evitar que se almacenen en caché los archivos php a los que se accede con menos frecuencia.
Pero nunca uses un TTL de 0.
Utilice apc.php para verificar su configuración. Verás qué se asigna realmente y cómo se utiliza. Los gráficos deben permanecer estables después de horas, si cambian completamente en cada actualización, entonces significa que su configuración es incorrecta (APC está limpiando todo). Asigne un 20% de lo que APC realmente utiliza como margen de seguridad y compruébelo periódicamente.
El valor predeterminado de permitir sólo 32 MB es ridículamente bajo. PHP se diseñó cuando los servidores tenían 64 MB y la mayoría de los scripts usaban un archivo php por página. Hoy en día, soluciones como Magento requieren más de 10k archivos (~60Mb en APC). Deberías dejar suficiente memoria para que la mayoría de los archivos php estén siempre en caché. No es un desperdicio, es más eficiente mantener el código de operación en la memoria RAM en lugar de tener el php sin formato correspondiente en el caché de archivos. Hoy en día podemos encontrar servidores dedicados con 24Gb de memoria por tan solo 150$, así que no dudes en dejarle varios GB a APC. Puse 2 GB de 24 GB en un servidor que aloja 5 tiendas Magento y ~40 sitios web de WordPress, APC usa 1,2 GB. Cuente 64 MB para la instalación de Magento, 20 MB para Wordpress con algunos complementos.