O que significa “tarefa mysqld: xxx bloqueada por mais de 120 segundos” significa?

3

Estamos solucionando um problema do MySQL onde algumas consultas estão demorando muito tempo e vejo muitas dessas entradas em / var / log / messages:

Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616327] INFO: task mysqld:4123 blocked for more than 120 seconds.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616525] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616813] mysqld        D  000000000000000d     0  4123   3142 0x00000080

O que isso significa? Como isso afeta o segmento do MySQL (4123 é o id do segmento?)

O valor em /proc/sys/kernel/hung_task_timeout_secs quando eu verifiquei agora é:

$ cat /proc/sys/kernel/hung_task_timeout_secs
120

Eu gostaria especificamente de saber como isso afeta o processo?

Eu li em um fórum que isso significa que acontece quando o processo está segurando muita memória.

    
por Sree 28.01.2015 / 08:06

2 respostas

2

echo 0 > /proc/sys/kernel/hung_task_timeout_secs apenas silencia o aviso. Além disso, não tem efeito algum. Qualquer valor acima de zero fará com que essa mensagem seja emitida sempre que uma tarefa for bloqueada por esse período de tempo.

O aviso é dado para indicar um problema com o sistema. Na minha experiência, isso significa que o processo é bloqueado no espaço do kernel por pelo menos 120 segundos, geralmente, porque o processo é privado de E / S de disco. Isto pode ser devido à troca pesada devido à utilização excessiva de memória, e. se você tiver um pesado carregamento de servidor web e tiver configurado muitos processos filho do apache para o seu sistema. No seu caso, pode ser que existam muitos processos mysql competindo por IO de memória e dados.

Também pode acontecer se o sistema de armazenamento subjacente não tiver um bom desempenho, por ex. se você tiver uma SAN sobrecarregada ou se houver erros de software em um disco que causam muitas tentativas. Sempre que uma tarefa tiver que esperar muito para que seus comandos IO sejam concluídos, esse aviso poderá ser emitido.

    
por 28.01.2015 / 08:52
3

"pendurado tarefas" são bugs que fazem com que o kernel deixe uma tarefa presa no estado "D" ininterrupto. Uma tarefa / processo nesse estado não pode ser eliminada, nem com kill -9 .

Sua mensagem em /var/log/messages significa que a tarefa 4123 , obviamente, o daemon mysql está nesse estado desde 120 segundos. Isso significa que o daemon mysql aguarda por recursos. Principalmente o estado "D" é causado devido a E / S.

Quando um processo solicita uma chamada de sistema de leitura em um filehandle aberto, ele entra no estado "D" enquanto precisa ler o arquivo. O processo é "bloqueado".

Esse valor em /proc/sys/kernel/hung_task_timeout_secs é apenas a definição de quando a mensagem que você vê deve aparecer nos registros. Como sua mensagem diz, você pode desativar a mensagem quando definir o valor como 0 . Mas isso não resolve o seu problema.

Você só pode resolver um estado não interrubível de duas maneiras:

  1. Reinicialize o sistema ou ...
  2. Descubra qual recurso o processo precisa e verifique se o recurso está disponível.
por 28.01.2015 / 08:57