Desempenho do site, cache não funcionando corretamente

8

insira a descrição da imagem aqui

Estou usando o módulo de registro de desempenho . Acima da captura de tela, uma coisa estranha que notei foi inserir cache_bootstrap em todas as páginas. Quando você acessa qualquer página (tema de administração e tema de front-end), insira o cache e exclua o cache em execução. Isso significa que o cache é definido e destruído em cada página e, na verdade, nenhum cache está ocorrendo. Como posso elaborar mais? Para diagnosticar esse problema, porque atualmente estou trabalhando no desempenho do site.

insira a descrição da imagem aqui

Também estou usando a New Relic para verificação de desempenho. Também mostra que a carga do banco de dados é alta.

e informações my.cnf.

insira a descrição da imagem aqui

Mr. J
fonte

Respostas:

3

O tamanho máximo permitido do pacote pode ser uma das razões pelas quais isso está acontecendo, mas posso ver várias razões pelas quais provavelmente é outra coisa nesse caso.

  1. Você não apenas tem gravações em cache, mas também exclusões explícitas em cache. Uma falha na gravação do cache resultaria apenas na repetição de gravações no cache e depois falhas no cache, mas não exclusões.
  2. Esta é a tabela cache_bootstrap. Existem alguns caches que podem ficar grandes, mas geralmente não são desse compartimento.

O motivo mais comum para esse padrão são as chamadas variable_set () que acontecem em todas as páginas. Veja de onde vêm essas exclusões de cache, com xhprof, com xdebug e definindo um ponto de interrupção ou adicionando um debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Tenho certeza de que você verá uma chamada variable_set () lá.

O problema é que existe um único cache global para variáveis. Toda gravação em cache resulta em uma exclusão em cache e a próxima solicitação lê a {variables}tabela inteira e a grava de volta no cache.

Muitos desenvolvedores não estão cientes disso e estão fazendo coisas como "garantir valores" chamando variable_set () diretamente em um arquivo .module ou em outro local que é executado em todas as solicitações.

Berdir
fonte
sim .. isso é verdade a maioria dos desenvolvedores, mesmo eu não sei sobre o fato variable_set () que você discutiu. e também eu sei sobre debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Obrigado por isso. :)
Sr. J
3

É apenas uma hipótese, mas se o cache de autoinicialização for reconstruído a cada carregamento da página, pode acontecer que alguns dos seus módulos estejam ausentes na pasta modules, mas ainda estejam presentes na tabela do sistema. Em cada página, o drupal tenta encontrá-lo e reconstruir o bootstrap_cache.

Experimente o módulo otimizador de Bootstrap , ele ajudará a encontrar esses registros e excluí-los.

Bogdan Tur
fonte