La mejor configuración de APC para reducir el tiempo de ejecución de la página

16

Tengo Drupal 7, apc con php-fpm y apache detrás del barniz y 512 MB de RAM.

Mido el tiempo de ejecución de la página con el módulo de desarrollo.

El tiempo de consulta de la base de datos es bajo (62 ms) en comparación con el tiempo de ejecución de la página, que es de 854 ms. Eso significa que hay un problema con la configuración de PHP y APC.

Mi configuración actual es solo

apc.shm_size = 64
apc.stat=1 

¿Cómo puedo mejorar?

¿Cuáles son las mejores configuraciones para Drupal dada la configuración anterior?

Gracias

John
fuente

Respuestas:

12

Ejecutamos en un entorno de inserción SVN, por lo que solo borramos el caché del archivo apc con un script.

Configuración de APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

Script PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 semana.

Después de esto, tener xdebug / xhprof en funcionamiento y hacer una rutina de caché del sitio debería permitirle saber qué está ralentizando el sitio. En resumen, analizar la salida de la rutina de caché es la mejor manera de acelerar Drupal. A continuación, enumero los parches y módulos que usamos para acelerarlo; en su caso será muy diferente.

Drupal 6 respuesta específica a continuación

Una vez que pase este punto y se dé cuenta de que APC no le dará lo que está buscando, cambie a pressflow y déle un giro a estos parches:

Pruebe también algunos de estos módulos, ya que mejoraron la velocidad de nuestros sitios a lo grande:

mikeytown2
fuente
Muchas gracias por su respuesta, pero tengo Drupal 7.
juan
Por lo tanto, tome las partes APC y las partes xdebug / xhprof y mire los parches D6 como un ejemplo de lo que debe buscar en la cola do issue. Todos los parches anteriores fueron el resultado de observar la rutina de caché, encontrar el punto de dolor y encontrar el problema correspondiente. Inicio rápido: drupal.org/project/issues/search/…
mikeytown2
Ahora hay un wiki de rendimiento de drupal 7: groups.drupal.org/node/210683
mikeytown2
1
Para su información, tuve que comentar la línea de apc.include_once_override = 1 porque se rompió el sitio puregin.org/node/2550/3928
Corbacho
php.net/apc.configuration#ini.apc.include-once-override Gracias por señalarlo. Dependiendo de la versión de PHP y APC, puede causar problemas
mikeytown2
3

Este es uno de esos "cuánto tiempo dura un trozo de preguntas de cuerda".

Lo que es bueno para un sitio de alto volumen puede no ser lo mismo para un sitio de bajo volumen con muchos módulos, y puede no ser lo mismo para un sitio de volumen medio con solo unos pocos módulos habilitados. Otros sitios que se ejecutan en el servidor también pueden estar consumiendo la memoria que APC tiene disponible.

Mi punto de partida es

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Luego ajusto la configuración del servidor, pero de nuevo, no hay un tamaño único para todos los ajustes.

Busque apc.php (probablemente ubicado en /usr/share/pear/apc.php) e instálelo en el DOCROOT para su instalación de Drupal. Bloquéelo a su dirección IP a través de la configuración de Apache. Edite el nombre de usuario / contraseña dentro y luego busque. Luego verá sus estadísticas APC.

Reconfigure el parámetro shm_size para minimizar las fallas de caché. Idealmente, desea darle suficiente memoria para que nunca se pierda la memoria caché de un archivo, más algo de memoria adicional para la memoria caché de usuario de APC.

Optimice TTL para evitar la acumulación de caché. Si no está editando archivos, puede aumentar este número.

enable_cli es útil cuando usa drush mucho, por lo que drush usa los archivos en caché de APC.

rfc1867 es útil para cargar archivos.

También noté el php-fpm en el título. Esto complica las cosas y está realmente más allá del alcance de Drupal Answers. Puede obtener mejores respuestas en Server Fault , ya que muchos de los ajustes de configuración del sistema no pertenecen a Drupal directamente.

mpdonadio
fuente
¿Dónde hay algún buen tutorial que explique en un lenguaje sencillo qué está haciendo cada configuración, como ttl, segmentos, etc.? ¿Cómo ayuda CLI con drush?
John
¿Podría explicar cómo "el tráfico que recibo, qué más se está ejecutando en el servidor, qué módulos he instalado, etc." afectar la configuración? gracias
juan
estas configuraciones anteriores no ayudaron mucho. ¿Debo probar xhprof para ver qué sucede con php?
John
Todas las configuraciones de APC se describen en php.net/manual/en/apc.configuration.php
mpdonadio
1
@MPD> enable_cli es útil cuando usas drush mucho, por lo que drush usa los archivos> en caché de APC. En realidad, el cli es un proceso separado y no comparte su caché de apc con apache, ni siquiera entre llamadas a drush.
Robin Millette
2

APC simplemente mejora la carga y el análisis de archivos PHP. Una gran parte es también el tiempo de ejecución en sí. Hay muchos factores que pueden aumentar el tiempo de ejecución, incluidos los errores (especialmente los errores relacionados con la memoria caché), la sobrecarga interna (por ejemplo, drupal_alter (), module_implements ()), etc.

Como usted pidió y ya fue sugerido por mikeytown2, usaría xhprof (lo prefiero a xdebug en estos días ya que proporciona acceso directo y rápido al resultado y no requiere herramientas adicionales) para averiguar dónde están sus cuellos de botella.

Recientemente escribí dos publicaciones de blog sobre el uso de xhprof dentro de Drupal y los típicos cuellos de botella , que pueden resultar interesantes.

Berdir
fuente
groups.drupal.org/node/82889 Perfiles de PHP con XHprof
juan