Cuidado com o cache de consultas do MySQL - ele usa um bloqueio global, então quando você começa a ter muita atividade, você verá deadlocks periódicos. O cache de consulta é útil somente para consultas exatamente as mesmas , e se você tiver muitas delas não está fazendo o cache em nível de aplicativo corretamente.
O primeiro passo para trabalhar no desempenho é sempre o perfil; otimização baseada na intuição é uma ótima maneira de desperdiçar seu tempo.
No trabalho, usamos Grafite como nosso repositório de dados, com uma versão modificada de StatsD e pipe-to-graphite como dados primários Métodos de envio. Ambas as ferramentas facilitam o envio de dados e, em seguida, o Graphite tem uma infinidade de ferramentas de análise.
Por exemplo, usando o script de verniz de pipe para grafite , pegamos todas as estatísticas de varnishstats
. Isso nos permite fazer facilmente gráficos de acerto / erro no Graphite, assim:
Vocêpodefazeramesmacoisacomomemcachedeadicionarganchosemseupróprioaplicativoparagravar...bem,tudoequalquercoisa!
Vocêtambémpodeencontrarferramentasdeanálisedepáginaúnicacomo xhprof e YSlow útil.
Depois de ter métricas, você não só sabe o que deve estar trabalhando, mas também poderá medir a melhoria quando terminar. Todo mundo gosta de validação!