servidor mysql pendurado em 'show processlist;'

2

Eu tenho um problema onde meu servidor mysql entra em um estado em que as operações básicas ficam pendentes para sempre.

$ mysql -ubuildbot -p -hdbserver
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7406
Server version: 5.5.9-log MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mydb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show processlist;
[hangs forever]
^C^C^C^C^C^C^C^C^C
[still stuck]

Não, não está sem espaço em disco. O uso da CPU é baixo.

saída iostat:

Linux 2.6.28-11-server (PSDB102)    04/22/2011  _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.65    0.01    0.62    0.09    0.00   95.74
    
por user79205 22.04.2011 / 11:39

1 resposta

1

Eu recomendo que você dê uma olhada no error_log , isso pode lhe dar algumas dicas sobre o que está acontecendo. Se o error_log não produzir nenhuma informação útil, então strace vem para o resgate.

Use assim:

strace -f -o strace.output -p pid_of_mysqld_parent

Isto irá rastrear todos os rastreios de todas as chamadas de sistema feitas pelo processo do servidor MySQL e seus filhos (daí o sinalizador -f) e os envia para um arquivo chamado strace.output. Então, enquanto runnning strace, conecte-se ao MySQL e siga os passos acima até que o processo seja interrompido. Depois que ele travar, digite CTRL+C no terminal strace e dê uma olhada no arquivo. Isso pode iluminar o caminho e dar algumas dicas sobre o que está acontecendo.

O problema também pode estar no lado do cliente, por isso, talvez você queira rastrear o cliente se a saída acima não for útil:

 strace -f -o strace.output mysql -ubuildbot -p -hdbserver

Então, você só precisa dar uma olhada no strace.output depois que ele parar.

Espero que isso ajude!

    
por 22.04.2011 / 13:45

Tags