PHP + MYSQL site perfomance

6

Eu tenho que gerenciar um site que não foi desenvolvido por mim. Está no PHP usando um banco de dados mysql, que está localizado no servidor web. O site, às vezes (quando os visitantes aumentam demais) pára de responder ou responde muito devagar.

Eu desenvolvi alguns sites em PHP, mas nunca cuidei do gerenciamento, então realmente não sei por onde começar. O servidor (o disco) parece estar bem, quando a web pára de responder a cpu está sendo usada em cerca de 55% e tem muita memória.

Não estou pedindo a alguém para resolver esse problema. Eu só gostaria de saber se alguém poderia me dar algumas dicas sobre onde posso encontrar registros e como devo lê-los e interpretá-los. Então, dessa forma eu seria capaz de saber se é o tráfego da rede, o banco de dados (que consulta) ou o que.

Obrigado!

Atualização: Esqueci de dizer: é um Windows Server 2003.

Nota: Eu gravei cerca de um dia com o Jet Profiler. Eu realmente não entendo todas as informações que ele fornece, mas há uma consulta que é muito lenta. Faz sentido porque é um select com uma cláusula where que tem três condições iguais. Inicialmente, não incluí isso na minha pergunta, porque quando executo a consulta do MySQL Query Browser, não demorou muito. Tem menos de 0,01 segundo.

    
por Diego 12.06.2012 / 19:10

3 respostas

2

Normalmente, é o banco de dados que desacelera um site. Mais do que provavelmente você tem um punhado de consultas que são mal escritas / não indexadas e são o que está causando a desaceleração. No MySQL, você pode encontrar as consultas que estão demorando demais para responder ativando o Log de consulta lenta .

Geralmente isso envolve as seguintes etapas:   1. Crie um arquivo chamado algo como slowqueries.log na pasta de log do MySQL, geralmente /var/log/mysql/ . Altere suas permissões para o usuário mysql usando chmod (supondo que você esteja no Linux).   2. Faça o login no meu sql como root e emita as seguintes consultas: %código% set GLOBAL slow_query_log_file='/var/log/mysql/slowqueries.log'; -- sets the log file

Depois de identificar as consultas que estão demorando para serem executadas, você pode usar EXPLAIN ou EXPLIQUE ESTENDIDO para analisá-los e ver como eles podem ser otimizados , geralmente adicionando índices / aprimorando junções.

    
por 12.06.2012 / 19:15
3

Eu tive problemas semelhantes com um site que eu estava usando escrito em PHP com um servidor separado rodando o mysql. Consegui usar o Jmeter e um plug-in útil que fornecerá a você uma análise baseada em gráfico da integridade de seus servidores: code.google.com/p/jmeter-plugins/wiki/PerfMon#Installation

Isso pode realmente ajudar você a diagnosticar o problema, pois poderá simular um número diferente de usuários. Em uma nota lateral, eu pude usar o plugin APC para PHP que otimizou o código. Apenas um pensamento: -)

    
por 12.06.2012 / 20:30
1

Verifique as consultas do MySQL, se você tiver acesso ao painel em seu servidor, veja o que está acontecendo. Consultas sql não otimizadas podem derrubar seu servidor (aconteceu comigo). Você deve começar por isso, deve haver algo que não está otimizado o suficiente e diminuindo a velocidade, ou o servidor não está funcionando bem.

    
por 12.06.2012 / 19:14