Prestazioni del sito, la cache non funziona correttamente


8

inserisci qui la descrizione dell'immagine

Sto usando il modulo di registrazione delle prestazioni . Sopra lo screenshot, una cosa strana che ho notato è inserire Cache_bootstrap in ogni pagina. Quando vai su qualsiasi pagina (sia il tema dell'amministratore che il tema del frontend) Inserisci la cache e quindi elimina la cache è in esecuzione. Significa che la cache è impostata e distrutta in ogni pagina e in realtà non si verifica alcuna cache. Come posso elaborarlo ulteriormente? Per diagnosticare quel problema perché attualmente sto lavorando sulle prestazioni del sito.

inserisci qui la descrizione dell'immagine

Sto anche usando New Relic per il controllo delle prestazioni. Mostra anche che il carico del database è elevato.

e informazioni my.cnf.

inserisci qui la descrizione dell'immagine

Risposte:



3

La dimensione massima consentita dei pacchetti potrebbe essere una delle ragioni per cui ciò sta accadendo, ma posso vedere molte ragioni per cui probabilmente è qualcos'altro in questo caso.

  1. Non hai solo scritture nella cache, ma hai anche cancellazioni esplicite della cache. Una scrittura della cache non riuscita comporterebbe solo la ripetizione delle scritture della cache e quindi dei mancati errori nella cache, ma non le cancellazioni.
  2. Questa è la tabella cache_bootstrap. Ci sono alcune cache che possono diventare grandi ma di solito non provengono da quel cestino.

Il motivo più comune per questo modello sono le chiamate con variabile_set () che si verificano su ogni pagina. Dai un'occhiata a dove provengono le cancellazioni della cache, con xhprof, con xdebug e impostando un breakpoint o aggiungendo un debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Sono abbastanza sicuro che vedrai una variabile_set () chiamare lì.

Il problema è che esiste una singola cache globale per le variabili. Ogni scrittura nella cache provoca una cancellazione della cache e la richiesta successiva leggerà l'intera {variables}tabella e la riscriverà nella cache.

Molti sviluppatori non ne sono consapevoli e stanno facendo cose come "garantire i valori" chiamando variabili_set () direttamente in un file .module o in un altro posto che viene eseguito su ogni richiesta.


sì .. è vero che la maggior parte degli sviluppatori, anche io, non conosco il dato variabile_set () di cui hai discusso. e conosco anche debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Grazie per quello :)
Mr. J,

3

È solo un'ipotesi, ma se la cache di bootstrap viene ricostruita ad ogni caricamento di pagina, può accadere che alcuni dei moduli manchino nella cartella dei moduli ma siano ancora presenti nella tabella di sistema. Drupal cerca su ogni pagina di trovarlo e ricostruire bootstrap_cache.

Prova il modulo di ottimizzazione Bootstrap , ti aiuterà a trovare tali record ed eliminarli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.