É difícil depurar de onde o problema está vindo.
Eu diria que reduza a sua configuração.
Você está usando: Varnish + Nginx + PHP-FPM + APC + W3 Cache total + Velocidade da página
Por que você precisa de verniz? O nginx também pode fazer cache para páginas estáticas. Dê uma olhada em fastcgi_cache
O PHP-FPM e o APC devem estar bem, considere apenas a memória APC suficiente para que todos os arquivos possam ser armazenados em cache sem problemas de memória e fragmentação.
Por que você precisa do W3 Total Cache? Dependendo das opções de configuração, isso pode sobrecarregar muita CPU, por exemplo. para diminuir o código ou armazenar em cache páginas ou chamadas de banco de dados para o disco ...
O mesmo com mod_pagespeed
- É um wrapper que processa seus arquivos de saída e também adiciona complexidade que usa ciclos de CPU.
Então - Se você quer um site mais rápido, eu diria que você deve desordenar essa bagunça e simplificá-la:
-
Livre-se do verniz: se você não tiver um strong caso de uso para ele. O nginx pode fazer cache muito bem e configurar o nginx para usar
fastcgi_cache
e usar um soquete para falar com o PHP-FPM. -
Livre-se do W3TC: Use
memcached
e o plug-in de cache do objeto memcache . Este é o seu DB-Cache e Object-Cache. Para o cache de páginas completas, basta usar o nginx ou o Varnish, se necessário. Você pode se livrar da configuração de cache de página inteira para nginx ou Varnish se usar batcache para armazenar páginas inteiras no memcached. Além disso, tente usar soquetes para o memcached. -
Livre-se de
mod_pagespeed
. Leia a otimização que faz para você e tente aplicá-las no tema ou nas imagens do seu blog manualmente. Se você estiver usando o gzip no nginx, a maioria das coisas não deve ser importante de qualquer maneira. -
Ative o cache de consulta do MySQL e procure por configurações otimizadas de desempenho do MySQL. Se você tem muitas escritas (por exemplo, muitos comentários), considere o uso do InnoDB.
-
Use o PHP 5.4 ou mesmo o PHP 5.5 - Lotes de melhorias de desempenho e memória foram introduzidos nesses lançamentos, o que deve proporcionar algumas economias de velocidade e de memória.
Abordagens mais avançadas:
Dê uma olhada no profiler xdebug . Isso deve lhe dar um resumo de qual função consome muita CPU. A página fornece alguns detalhes sobre como analisar os dados gerados usando o kcachegrind .
Você poderia tentar observar a quantidade de syscalls usando strace
na árvore de processos. Você precisará -f
flag para isso e provavelmente apenas imprimir estatísticas -c
deve ser suficiente para aprender sobre um possível problema.
Eu diria que aplique o princípio KISS e faça uso apenas de desempenho ou coisas de ajuste se você tiver um caso de uso claro para ele e as ferramentas mostrarem uma melhoria usando o perfil.