Melhores configurações da APC para reduzir o tempo de execução da página

16

Eu tenho o Drupal 7, apc com php-fpm e apache atrás de verniz e 512 MB de RAM.

Medo o tempo de execução da página com o módulo devel.

O tempo de consulta do banco de dados é baixo (62ms) comparado ao tempo de execução da página, que é de 854 ms. Isso significa que há um problema com as configurações de PHP e APC.

Minhas configurações atuais são apenas

apc.shm_size = 64
apc.stat=1 

Como posso melhorar?

Quais são as melhores configurações para o Drupal, dada a configuração acima?

obrigado

John
fonte

Respostas:

12

Como executamos em um ambiente de envio SVN, apenas limpamos o cache do arquivo apc com um script.

Configurações da 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.

Depois disso, colocar o xdebug / xhprof em funcionamento e executar uma operação de cache do site deve informar o que está desacelerando o site. Em resumo, a análise da saída de moagem do cache é a melhor maneira de acelerar o Drupal. Abaixo, estou listando quais patches e módulos usamos para acelerar; no seu caso, provavelmente será diferente.

Drupal 6 Resposta específica abaixo

Depois de passar por esse ponto e perceber que a APC não lhe dará o que você procura, mude para pressflow e experimente esses patches:

Experimente também alguns desses módulos, pois eles melhoraram bastante a velocidade de nossos sites:

mikeytown2
fonte
Muito obrigado pela sua resposta, mas tenho Drupal 7.
john
Portanto, pegue as partes da APC e as partes xdebug / xhprof e veja os patches D6 como um exemplo do que procurar na fila de problemas. Todos os patches acima são resultado de uma análise do cache, encontrando o ponto problemático e o problema correspondente. Início rápido: drupal.org/project/issues/search/...
mikeytown2
Há um wiki desempenho Drupal 7 agora: groups.drupal.org/node/210683
mikeytown2
1
Apenas FYI, eu tinha que comentar o apc.include_once_override line = 1 porque quebrou o site puregin.org/node/2550/3928
corbacho
php.net/apc.configuration#ini.apc.include-once-override Obrigado por apontar isso. Dependendo da versão do PHP e APC pode causar problemas
mikeytown2
3

Esse é um daqueles "quanto tempo dura um pedaço de perguntas sobre cordas".

O que é bom para um site de alto volume pode não ser o mesmo para um site de baixo volume com muitos módulos e pode não ser o mesmo para um site de volume médio com apenas alguns módulos ativados. Outros sites em execução no servidor também podem estar consumindo a memória que a APC tem disponível.

Meu ponto de partida é

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

Depois, ajusto as configurações do servidor, mas, novamente, não há um tamanho único para todo o conjunto de configurações.

Encontre o apc.php (provavelmente localizado em /usr/share/pear/apc.php) e instale-o no DOCROOT para a instalação do Drupal. Bloqueie-o no seu endereço IP via configuração do Apache. Edite o nome de usuário / senha dentro e navegue até ele. Você verá suas estatísticas da APC.

Reconfigure o parâmetro shm_size para minimizar falhas de cache. Idealmente, você deseja fornecer apenas memória suficiente para nunca ter uma falta de cache em um arquivo, além de alguma memória adicional para o cache do usuário da APC.

Otimize o TTL para evitar a agitação do cache. Se você não estiver editando arquivos, poderá aumentar esse número.

O enable_cli é útil quando você usa muito o drush, para que o drush use os arquivos em cache da APC.

O rfc1867 é útil para upload de arquivos.

Notei também o php-fpm no título. Isso complica as coisas e está realmente além do escopo das respostas do Drupal. Você pode obter melhores respostas na falha do servidor , pois muitas das configurações do sistema não se referem diretamente ao Drupal.

mpdonadio
fonte
onde está um bom tutorial que explica em linguagem fácil o que cada configuração está fazendo, como ttl, segmentos etc.? como cli ajuda no drush?
Joao4
Você poderia explicar como "o tráfego que eu recebo, o que mais está sendo executado no servidor, quais módulos eu instalei etc." afetar as configurações? obrigado
jo
essas configurações acima não ajudaram muito. Devo tentar o xhprof para ver o que acontece com o php?
Joao4
Todas as configurações da APC são descritos na php.net/manual/en/apc.configuration.php
mpdonadio
1
O @MPD> enable_cli é útil quando você usa muito drush, de modo que o drush usa os arquivos em cache da APC. Na verdade, o cli é um processo separado e não compartilha seu cache apc com o apache, ou mesmo entre chamadas para drush.
Robin Millette
2

A APC apenas melhora o carregamento e a análise de arquivos PHP. Uma grande parte também é o próprio tempo de execução. Existem muitos fatores que podem aumentar o tempo de execução, incluindo erros (especialmente erros relacionados ao cache), sobrecarga interna (por exemplo, drupal_alter (), module_implements ()) e assim por diante.

Como você pediu e já foi sugerido pelo mikeytown2, eu usaria o xhprof (hoje em dia, prefiro o xdebug, pois fornece acesso rápido e direto ao resultado e não requer ferramentas adicionais) para descobrir onde estão os seus gargalos.

Recentemente, escrevi duas postagens no blog sobre o uso do xhprof no Drupal e gargalos típicos , que você pode achar interessante.

Berdir
fonte
groups.drupal.org/node/82889 Criação de perfil PHP com XHprof
john