O MySQL começou a consumir cerca de 40% do tempo de CPU do sistema e ficou sem resposta de repente

2

Eu uso Debian 6.0.3 x86_64 e MySQL 5.5.20-1 ~ dotdeb.0-log do repositório Dotdeb. O processo do MySQL começou a consumir um monte de horas de servidor de tempo de CPU "sy" atrás de acordo com o este gráfico. Não consegui me conectar ao processo mysqld e tive que eliminá-lo. Não encontrei nada útil em logs. Minha configuração parece ser bastante comum (eu suponho que o Dotdeb apenas redistribui versões do MySQL padrão) e eu nunca vi nada parecido antes. Qual é a possível causa raiz disso? Como posso evitar essa situação no futuro?

    
por Alex 08.07.2012 / 23:00

1 resposta

5

Se isso acontecer novamente, execute strace -p <PID> -T ou troque o -T por -c .

A opção -T imprime um delta de tempo após cada chamada de sistema que permite saber quanto tempo demorou. Se você vir chamadas em particular, como stat() e open() , levar muito tempo, poderá inferir uma coisa e, caso veja como semop() ou poll() demorando muito tempo, pode deduzir outra coisa. O mesmo vale para ver muitos deles, mas isso pode ser mais difícil de ver, e é aí que entra a próxima opção.

A opção -c aguarda até o programa terminar ou você sair com ctrl-c e, em seguida, imprimir um resumo de todas as chamadas do sistema e quanto tempo foi gasto em cada tipo.

Com alguma sorte, isso deve deixar você saber o que o MySQL está fazendo. Então você só precisa descobrir o que fazer sobre isso.

    
por 08.07.2012 / 23:47