2015-12-18 2 views
1

Каждый день или около того наши сайты Wordpress перестают отвечать на запросы, страницы начинают возвращать страшное «Ошибка установления соединения с базой данных». В журналах MySQL ничего нет, и я не понимаю, что может вызвать проблему. У нас не так много посетителей сайта, и машина является экземпляром Medium EC2. У кого-нибудь есть идеи о том, как разрешить это?Maddening Intermittent Wordpress: ошибка установления соединения с базой данных

+0

Журналы Check Error, также - это аналогичный время суток? Используете ли вы кеширование (супер кеш wp и т. Д.)? – Nick

ответ

0

Здесь не так много работы. Но ... У меня была такая же проблема с моим микро-экземпляром. Моя проблема заключалась в том, что на сервере не хватало памяти, а затем сервер mysql остановился. Он начнется снова при перезагрузке компьютера, но это будет только вопрос времени, прежде чем он снова рухнет.

Вот что я получал в своих журналах MySQL.

151023 6:15:44 InnoDB: Initializing buffer pool, size = 128.0M 
InnoDB: mmap(137363456 bytes) failed; errno 12 
151023 6:15:44 InnoDB: Completed initialization of buffer pool 
151023 6:15:44 InnoDB: Fatal error: cannot allocate memory for the buffer pool 
151023 6:15:44 [ERROR] Plugin 'InnoDB' init function returned error. 
151023 6:15:44 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 
151023 6:15:44 [ERROR] Unknown/unsupported storage engine: InnoDB 
151023 6:15:44 [ERROR] Aborting 

Возможно, вы захотите проверить что-то подобное. Я использую Ubuntu, и журнал по умолчанию равен /var/log/mysql/.

Я решил проблему, установив файл подкачки по Amazon EC2, mysql aborting start because InnoDB: mmap (x bytes) failed; errno 12. У экземпляров AWS по умолчанию нет установки пространства подкачки (тогда как установка, которую я загрузил из Ubuntu в тот же день). Вам нужно настроить его вручную. Вот способ:

ssh в ваш экземпляр AWS. Тогда:

  1. Run dd if=/dev/zero of=/swapfile bs=1M count=1024
  2. Run mkswap /swapfile
  3. Run swapon /swapfile
  4. Добавьте эту строку /swapfile swap swap defaults 0 0 в /etc/fstab

Прочитайте связанный вопрос для более подробной информации. Надеюсь, это поможет!

1

У меня была аналогичная проблема с прерывистым сбоем MySQL. Оказалось, что это конфигурации Apache. Боты были грубыми, заставляя сайт и в конечном итоге вызвали сбой Apache (проверьте свои журналы: $ cat /var/log/apache2/access.log). Apache автоматически перезагружается, но запасной памяти недостаточно, чтобы перезапустить MySQL, следовательно, ошибка подключения к базе данных. Короткое исправление заключается в том, чтобы уменьшить количество RequestWorkers в Apache, чтобы лучше соответствовать количеству оперативной памяти.

Вы можете запустить диагностику в своей конфигурации apache с помощью Apache2Buddy. Это будет рассчитать, сколько Apache Пролетарии вы можете запустить данный объем оперативной памяти у вас есть и насколько велика ваша заявка: $ curl -L http://apache2buddy.pl/ | perl

Это, вероятно, будет рекомендовать изменения MaxRequestWorkers (или MaxClients на старых системах Apache) в вашем MPM- Конфикорды. Этот файл находится на /etc/apache2/mods-available/mpm_prefork.conf в моей системе. После изменения значения, которое рекомендует Apache2Buddy, просто перезапустите Apache, и вам должно быть хорошо идти.

Я написал статью об этой ситуации, если вы хотите более глубокое объяснение, способ подчеркнуть тест, или идеи о том, как блокировать некоторые бот трафика: http://brunzino.github.io/blog/2016/05/21/solution-how-to-debug-intermittent-error-establishing-database-connection/

Смежные вопросы