Rendimiento del sitio, el caché no funciona correctamente

8

ingrese la descripción de la imagen aquí

Estoy usando el módulo de registro de rendimiento . Arriba de la captura de pantalla, una cosa extraña que noté fue Insertar Cache_bootstrap en cada página. Cuando vaya a cualquier página (tanto el tema de administración como el tema de interfaz), inserte el caché y luego elimine el caché en ejecución. Significa que el caché se establece y destruye en cada página y, en realidad, no se está produciendo caché. ¿Cómo puedo elaborarlo más? Para diagnosticar ese problema porque actualmente estoy trabajando en el rendimiento del sitio.

ingrese la descripción de la imagen aquí

También estoy usando New Relic para verificar el rendimiento. También muestra que la carga de la base de datos es alta.

y la información de my.cnf.

ingrese la descripción de la imagen aquí

Señor j
fuente

Respuestas:

3

El tamaño de paquete máximo permitido podría ser una de las razones por las que esto está sucediendo, pero puedo ver varias razones por las que probablemente sea algo más en este caso.

  1. No solo tiene escrituras de caché, también tiene eliminaciones explícitas de caché. Una escritura de caché fallida solo resultaría en repeticiones de escrituras de caché y luego errores de caché, pero no eliminaciones.
  2. Esta es la tabla cache_bootstrap. Hay algunos cachés que pueden crecer pero generalmente no provienen de ese contenedor.

La razón más común para este patrón son las llamadas variable_set () que ocurren en cada página. Eche un vistazo al origen de esas eliminaciones de caché, ya sea con xhprof, con xdebug y estableciendo un punto de interrupción o agregando un debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Estoy bastante seguro de que verá una llamada variable_set () allí.

El problema es que hay una única caché global para las variables. Cada escritura de caché da como resultado una eliminación de caché y la siguiente solicitud leerá toda la {variables}tabla y la volverá a escribir en la caché.

Muchos desarrolladores no son conscientes de eso y están haciendo cosas como "garantizar valores" llamando a variable_set () directamente en un archivo .module u otro lugar que se ejecuta en cada solicitud.

Berdir
fuente
sí ... eso es cierto, la mayoría de los desarrolladores, incluso yo, no sé sobre el hecho variable_set () que discutiste. y también conozco debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Gracias por eso. :)
Sr. J
3

Es solo una hipótesis, pero si su caché de bootstrap se reconstruye en cada carga de página, puede suceder que algunos de sus módulos falten en la carpeta de módulos pero todavía estén presentes en la tabla del sistema. En cada página cargada, drupal intenta encontrarlo y reconstruir bootstrap_cache.

Pruebe el módulo optimizador Bootstrap , le ayudará a encontrar dichos registros y eliminarlos.

Bogdan Tur
fuente