Scripts PHP ficando aleatoriamente muito lentos para responder - Bloqueio de banco de dados?

1

Eu não tinha certeza se postaria isso aqui ou no stackoverflow, então peço desculpas se estiver no lugar errado.

Eu tenho cerca de 7 scripts php em execução em um centOS VPS. Cada um desses scripts contata um servidor de jogo e processa os logs, com os logs ele faz algumas consultas ao banco de dados ou envia informações de volta para o servidor do jogo.

Estou com um problema em que alguns dos scripts ficam aleatoriamente Lentos na resposta e não sei por onde começar minha depuração. Cada script se conecta ao seu próprio esquema de banco de dados, mas no mesmo servidor MySQL. Cada script fará cerca de 4 inserções por segundo e o dobro de instruções selecionadas em seus respectivos bancos de dados. Eu pensei que um bloqueio de banco de dados pode causar o problema, mas algumas mensagens de console que são lidas do banco de dados são enviadas ao console de servidores de jogos sem problema a cada 30 segundos, mesmo quando o script é lento para responder a outros comandos.

Nenhum dos scripts está usando muita memória ou poder de CPU. Cerca de 0,1% cada.

Eu sei que esta informação é realmente vaga, mas eu não conheço muito bem o linux (na verdade, top é sobre o meu limite) e eu realmente não sei onde começar a depurar isso.

Obrigado.

    
por webnoob 14.03.2011 / 23:32

1 resposta

2

Algumas coisas que você pode tentar:

  • Verifique os logs do sistema e do aplicativo em busca de mensagens relevantes. Às vezes, há problemas / tempos limite que serão registrados lá. Isso inclui o log de consultas lentas do MySQL que o DerfK mencionou.
  • Algum tipo de sistema de monitoramento no servidor seria bom ter. Isso lhe diria com certeza se há algum gargalo óbvio (CPU, memória, IO, etc ...). Como alternativa, se os problemas ocorrerem em horários específicos, você poderá usar as várias ferramentas de linha de comando top, vmstat, iostat, etc ... para verificar o status do sistema. Certifique-se de eliminar as causas óbvias / comuns primeiro (alta CPU, pouca RAM, uso de swap, bloqueios de IO / problemas / alta carga).
  • Se você puder realizar testes de desempenho / testes de desempenho, poderá ajudar a determinar a origem do problema. Ser capaz de duplicar um problema de maneira confiável é um grande passo para resolvê-lo.
  • Considere adicionar alguns log básicos em seus scripts. Eu começaria fazendo uma verificação básica do tempo de execução do script e emitindo algo somente se levasse mais de X segundos para ser executado.
  • Você menciona os logs de análise de scripts. Se possível, tente executar os scripts sobre o mesmo conjunto de logs várias vezes e veja se o problema ocorre no mesmo local ou aleatoriamente em locais diferentes. Você também pode tentar desabilitar as gravações para ver se os problemas são causados pelas leituras / análises ou pelas gravações (ou ambos).
  • Se você encontrar determinadas consultas em execução lenta, tente executá-las / testá-las manualmente no banco de dados por meio do cliente da linha de comando. Isso lhe dirá se as consultas em si são lentas ou apenas a execução remotamente do PHP por algum motivo.
por 15.03.2011 / 14:40

Tags