Por que um processo está levando tantos recursos

1

Meu site está sendo muito lento ou não responde. Uma rápida olhada no comando top mostra algo assim:

PID  USER      PR  NI  VIRT  RES  SHR  S %CPU  %MEM    TIME+  COMMAND
1709 mysql     20   0  828m  432m 5584 S 382.6  5.4   7414:24 mysqld

O restante dos processos está muito abaixo desses valores. Obviamente, o MySQL está tendo alguns problemas. Como posso verificar o que realmente está acontecendo e por que são necessários tantos recursos?

Obrigado.

    
por 6bytes 25.11.2009 / 18:31

3 respostas

2

Execute show processlist no console do mysql para obter uma lista das consultas atualmente em execução. Procure por aqueles que estão funcionando há algum tempo, para ver o que estão fazendo. As chances são de que haja algumas consultas fazendo quantidades monstruosas de trabalho (geralmente devido a índices ruins).

    
por 25.11.2009 / 18:32
1

Além da resposta da womble ( que apontam para otimizar suas consultas); para aqueles que acham 382,6% de uso da CPU confuso, note que o MySQL é um servidor multiencadeado. Provavelmente estava executando 4 threads full-tilt, quase monopolizando 4 núcleos (eu tenho certeza que ele pode fazer ainda mais em uma máquina grande o suficiente). Pressionar 'H' em top mostra cada thread separadamente.

    
por 25.11.2009 / 18:51
0

Você também deve dar uma olhada no log lento do mysql, se estiver habilitado.

    
por 25.11.2009 / 19:27