O preço foi à direita e por pouco mais de US $ 100 por mês eu tenho um servidor agradável, com 2 GB de memória, 500 GB de banda mensal, uma CPU rápida a tudo a minha auto, a abusos como eu vejo fit.Fast para a frente a UFC 77. Você vê Eu corro um site que faz previsões e resultados UFC UFC. Na noite da luta, o site pode ficar muito ocupado, meu recorde anterior era de 18.000 visitantes nos 3 ou mais horas que as lutas acontecem. Minha conta de hospedagem compartilhada nunca tive um problema com esta carga, pelo menos não tanto quanto eu poderia dizer.
No entanto, com o UFC 77 em meu novo hosting dedicado Conta Meu servidor de bater em uma parede de tijolos. A CPU foi de 100% e havia 200 processos apache todos competindo para o CPU e memória disponível. Imediatamente comecei a procurar razões e mais importante soluções. Três dias mais tarde, eu acho que eu tenho mais do meu answers.It de importante saber que a Go Daddy não foi a culpa, pedi uma caixa com determinadas características e que é exatamente o que eles me deram, completo com todos os softwares que eles disseram. MySQL, PHOP 4.3.9 e 2.0.52 Apache.
Então comecei a procurar (quando o servidor se acalmou) com o que estava acontecendo quando um usuário solicitou uma página. A primeira coisa que eu notei foi que o processo de apache atual levaria cerca de 5% da CPU, eu não prestei atenção a quanto tempo ele correu. A próxima coisa que eu notei foi que mysql também levaria CPU significativa, mesmo que apenas por um curto período de tempo. É importante saber que durante o UFC 77 MySQL estava levando cerca de 50% da CPU para todo o período ocupado. Hora de procurar algum optimizations.For meu site, onde há 20.
000 visitantes em 3 horas e talvez 10 atualizações durante esse tempo, caching, obviamente, seria útil. Notei pesquisar na web apache que tem alguns cache e ainda melhor alguns min cache, no entanto, não é considerado pronto para produção no 2.0.52 compilação que eu tenho, então eu descartei essa idéia rapidamente. Eu fiz no entanto notar algumas coisas quando eu olhei para MySQL optimizations.The otimização MySQL mais importante que eu encontrei é a opção query_cache_size. Você vê, o MySQL tem esse conceito de cache de consulta, aqui está uma explicação simples.
Se eu fizer uma consulta simples, saySELECT customer_name do cliente onde customer_id> 10 (eu sei, uma consulta bobo) Em geral, a base de dados passa por tudo isso de magia e retorna o conjunto de resultados de todos os clientes nomes quem é id são maiores do que 10. Para essa consulta não iria demorar muito tempo, mas quanto mais complexa a consulta a mais que levaria.
No entanto, com o MySQL Query caching, o resultado dessa consulta seria mantida na memória, juntamente com a consulta em si, o que significa que na próxima vez que a mesma consulta foi executado o banco de dados seria apenas verificar que não há tabelas na consulta foram alterados e, em seguida, olhar para cima o resultado na memória e devolvê-lo. Isto é muito mais rápido. MySQL tem cache de consulta ativada por padrão, mas a variável query_cache_size é definido como 0, essencialmente desabilitar o recurso. Para ativá-lo você deve fazer: query_cache_size = 64M no my.
cnfNote: Eu também aumentou minha query_cache_limit para 4M e meu thread_cache_size para 384. Há muitas outras opções do MySQL que você pode definir para melhorar o desempenho, procure um bom livro ou MySQL talvez eu vou postar alguns deles no meu depósito do blog de código aberto em www.open-source-depot.com/blog.After definir essas opções no my.cnf você precisará reiniciar MySQL, sendo que eu sou o tipo de impaciente e eu não gosto de processos reiniciar eu fui para a linha de comando MySQL e definir as opções globais.
Por alguma razão o 64M não funcionou para mim lá, então eu usei o expandida (bytes) versioni.e mysql> SET GLOBAL query_cache_size = 60000000; para ver o que está definido, faça um: mysql>