Сайт Drupal заблокирован из-за многих ошибок подключения - сайт отключается - PullRequest
4 голосов
/ 08 июня 2011

Время от времени число подключений к базе данных из нашей системы Drupal 6.20 к нашей базе данных Mysql достигает 100-150, и через некоторое время веб-сайт отключается.Сообщение об ошибке при попытке подключения к Mysql вручную «заблокировано из-за многих ошибок подключения. Разблокируйте с помощью« mysqladmin flush-hosts »».Поскольку база данных размещена на Amazon RDS, у меня нет разрешения на выполнение этой команды, но я могу перезагрузить базу данных, и после перезагрузки веб-сайт снова работает нормально.До следующего раза.

Drupal сообщает о нескольких ошибках до перехода в автономный режим, двух типов:

Дублирующая запись '279890-0-all' для ключа 'PRIMARY' запрос: node_access_write_grants /* Гость: node_access_write_grants * / INSERT INTO node_access (nid, область, gid, grant_view, grant_update, grant_delete) VALUES (279890, 'all', 0, 1, 0, 0) в /var/www/quadplex/drupal-6.20/modules / node / node.module в строке 2267.

Превышено время ожидания блокировки;попробуйте перезапустить запрос транзакции: content_write_record / * Гость: content_write_record * / UPDATE content_field_rating SET vid = 503621, nid = 503621, field_rating_value = 1212 WHERE vid = 503621 в /var/www/quadplex/drupal-6.20/sites/all/modules/cck/content.module в строке 1213.

Ниды в этих двух запросах всегда одинаковы и относятся к двум узлам, которые часто автоматически обновляются пользовательским модулем.Я могу отследить корреляцию между этими ошибками и необычно многими веб-запросами в журналах Apache.Я бы понял, что сайт станет медленнее из-за этого.Но:

  1. Почему возникают эти ошибки и как их можно устранить?Мне кажется, это связано с несколькими веб-запросами, пытающимися обновить один и тот же узел одновременно.Но, конечно же, Drupal должен справиться с этим, блокируя таблицы и т.д.?Или я должен иметь дело с этим каким-то особым образом?

  2. Несмотря на более высокую загрузку сети, почему база данных полностью блокируется и требует перезагрузки?Разве не было бы лучше, если бы веб-сайт все еще имел доступ к Mysql, и поэтому, когда нагрузка снизится, он сможет снова обслуживать страницы?Есть ли какие-то настройки для этого?

Спасибо!

1 Ответ

3 голосов
/ 11 июля 2011

Может быть решена одна или все эти три вещи для проверки:

  1. у вас недостаточно места на диске? В ssh введите команду df -h и убедитесь, что у вас все еще есть место на диске.

  2. Повреждены ли таблицы? Восстановите таблицы в phpMyAdmin или инструкции CLI здесь: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html

  3. Вы настроили производительность mysql с помощью /etc/my.cnf? Посмотрите это для большего количества идей: http://drupal.org/node/51263

...