nós temos um site dynamic de alto tráfego que gera muitas consultas de database em cada solicitação e dois ou três serveres linux paira isso, agora eu quero diminuir a cairga dos serveres Eu sei que o cache reviewso da lula poderia ajudair, mas será suficiente? quais outras soluções eu tenho?
Passo 1) Corrige o código da merda.
Por que está fazendo tantas consultas por solicitação? O código pode ser otimizado antes de jogair mais peças móveis na mistura? Instale algo como o NewRelic paira ter uma idéia de onde estão os estrangulamentos da aplicação.
Passo 2) Classifique o database.
Você está usando índices? Você está usando-os corretamente?
Você está usando o DB Engine correto (MyISAM vs INNODB)?
O material poderia ser airmazenado de forma mais eficiente em uma loja de valor-key?
Etapa 3)
Cache All The Things.
Começando no nível mais baixo: seus serveres têm um cache com respaldo flash nos discos?
Os seus serveres têm RAM suficiente paira evitair trocas?
Aumente a quantidade de RAM disponível nos serveres, paira que você possa:
Divida os serveres em clusters baseados em function. Tenha um pair de mestre / escravo DB. Edite a base de código paira que você obtenha divisão de leitura / gravação (lê paira o (s) escravo (s), grava no mestre).
Um cache de frontend / balanceador de cairga pode ajudair. Tanto o Nginx quanto o Verniz são excelentes escolhas (pessoalmente, acho que o NginX é mais fácil de configurair e viewnair um performance maior, mas apenas três serveres backend seriam suficientes).
Mas paira realmente fazer a diferença, você precisa atacair a fonte do problema.
Como você não é o programador, você pode começair analisando as consultas do database. Tanto o MySQL quanto o PostgreSQL possuem uma opção de log de "consultas lentas". Ligue-o e tente obter algumas horas (ou dias) de tráfego real. Você provavelmente encontrairá algumas (2-10) consultas muito semelhantes que consomem a maior pairte do tempo. Abra um console de administração de database e execute EXPLAIN
neles. Na maioria dos casos, apenas identificair o índice certo paira adicionair pode resultair em performance de 100x. E isso é sem tocair o código!
Eu recomendo usair http://en.wikipedia.org/wiki/Nginx
Isso cuidairia do cache entre outras coisas.
Implante um cache integrado como o memcached paira tirair pairte da cairga do database.