У меня проблема, когда мой сервер mysql попадает в состояние, при котором основные операции зависают навсегда.
$ 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]
Нет, не хватает места на диске. Низкая загрузка ЦП.
Вывод 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
Я рекомендую вам взглянуть на error_log
, это может дать вам подсказку о том, что происходит. Если error_log
не выводит никакой полезной информации, тогда strace
приходит на помощь.
Используйте это так:
strace -f -o strace.output -p pid_of_mysqld_parent
Это будет отслеживать все системные вызовы, сделанные серверным процессом MySQL и его дочерними процессами (отсюда и флаг -f), и выводить их в файл с именем strace.output. Затем, запуская strace, подключитесь к MySQL и выполняйте описанные выше шаги, пока процесс не зависнет. После зависания введите CTRL+C
на терминале strace и просмотрите файл. Это может пролить свет на путь и дать вам некоторые подсказки о том, что происходит.
Проблема может быть и на стороне клиента, поэтому вы можете захотеть ограничить клиента, если приведенный выше вывод не помогает:
strace -f -o strace.output mysql -ubuildbot -p -hdbserver
Затем вам просто нужно взглянуть на strace.output после того, как он зависнет.
Надеюсь это поможет!