Я получаю ошибки «Потеряно соединение с сервером MySQL» и «2006: сервер MySQL ушел» настолько часто, что сервер становится непригодным для использования. Есть вопросы, связанные с этой проблемой, но ни один из них не относится к моей ситуации; например, нет сетевого подключения (сервер подключен через сокет к клиентскому процессу, который находится на том же компьютере), и нет длинных запросов (на машине работает несколько CMS - mediawiki, drupal и joomla - и PHPMyAdmin, но в сгенерированных запросах нет ничего исключительного, AFAIK).
Я увеличил все тайм-ауты до такой степени, что их должно быть достаточно:
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 60 |
| delayed_insert_timeout | 300 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 6000 |
| net_write_timeout | 6000 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
| max_allowed_packet | 16777216 |
+-----------------------------+----------+
Все остальные настройки по умолчанию, кроме
query_cache_size=64MB
max_allowed_packet=16M
Я также изменил параметр connect_timeout в php.ini на неограниченный:
; Maximum time (in seconds) for connect timeout. -1 means no limit
; http://php.net/mysql.connect-timeout
mysql.connect_timeout = -1
Перезапуск сервера устраняет проблему на несколько часов. После этого любой доступ через CMS (то есть через PHP) и через небольшую тестовую программу PHP с тривиальным запросом не выполняется. Однако я все еще могу получить доступ к серверу MySQL и базам данных через клиент MySQL.
В журнале ошибок MySQL нет сообщений об ошибках.
Сервер работает на последнем Mac Mini с использованием Mac OS X 10.9.5, MySQL v5.6.22 и PHP v5.6.3, установленных с использованием порта Mac.
Не могли бы вы помочь с идеями, где мне следует искать, чтобы с этим справиться? (Этот запрос был первоначально размещен на Переполнение стека, но мне посоветовали сделать репост здесь)
[В ответ на комментарии)
MYSQL теперь демонстрирует обычные симптомы, поэтому я могу сообщить о его состоянии. Для @Nathan C, ps aux |grep mysql
дает:
_mysql 34888 0.0 6.4 4219456 1068400 ?? S 11:00pm 2:09.44 /opt/local/lib/mysql56/bin/mysqld --user=_mysql
root 34887 0.0 0.0 2510772 1192 ?? Ss 11:00pm 0:00.22 /opt/local/bin/daemondo --label=mysql56-server --start-cmd /opt/local/lib/mysql56/bin/mysqld --user=_mysql ; --pid=exec
root 74518 0.0 0.0 2475116 2140 s000 S+ Wed12pm 0:00.02 mysql -u root -p
scs1ng 7293 0.0 0.0 2432784 616 s003 R+ 8:04pm 0:00.00 grep mysql`
и top
показывает:
Processes: 247 total, 2 running, 8 stuck, 237 sleeping, 943 threads 20:10:09
Load Avg: 1.50, 1.27, 1.13 CPU usage: 0.90% user, 1.69% sys, 97.39% idle SharedLibs: 16M resident, 11M data, 0B linkedit. MemRegions: 54262 total, 4947M resident, 111M private, 1476M shared.
PhysMem: 11G used (1535M wired), 5133M unused. VM: 629G vsize, 1069M framework vsize, 128(0) swapins, 199(0) swapouts. Networks: packets: 309678079/54G in, 382978367/227G out.
Disks: 35242710/547G read, 72080598/1265G written.
PID COMMAND %CPU TIME #TH #WQ #POR #MRE MEM RPRVT PURG CMPR VPRVT VSIZE PGRP PPID STATE UID FAULTS COW MSGS MSGR SYSBSD SYSMAC CSW PAGE KPRV KSHR IDLEW POWE
34888 mysqld 0.1 02:09.61 24 0 45 223 1021M 1021M 0B 0B 1220M 4121M 34887 34887 sleeping 74 325413 567 76 17 8737931+ 18555 1618292+ 0 -4M 27M 291795+ 0.3
@zimmi Я запустил mysqlreport сразу после перезапуска сервера mysql. Результат выглядел вполне разумным. Я снова запустил его, но он не может подключиться:
scs1ng$ perl5.12 mysqlreport --user root -password
Password for database user root:
DBI connect('host=localhost','root',...) failed: Lost connection to MySQL server at 'sending authentication information', system error: 32 at mysqlreport line 249
Died at mysqlreport line 249, <STDIN> line 1.
Увидеть ошибка mysql это могло быть применено к вам.
По-видимому, вы можете избавиться от этой ошибки, ограничив конфигурацию table_open_cache большим числом (500)