Назад | Перейти на главную страницу

Сервер Ubuntu 12.04 - MySQL продолжает вылетать - Возможные проблемы InnoDB

Я искал решение, но, похоже, ничего не работает. На этом сервере у меня есть единственный сайт Drupal 6.

Сервер: Ubuntu 12.04 Apache / 2.2.22 (Ubuntu) 5.3.10-1ubuntu3.8 MySQL 5.5.32 Drupal 6

Вот ссылка на мои файлы ошибок Apache2 и MySQL и мой файл конфигурации для MySQL. Пожалуйста, посмотрите. https://drive.google.com/folderview?id=0By8qja37RfvzWUt1a0lGSzZqR3M&usp=sharing Эти файлы огромны, поэтому я привел к ним ссылку, а не вставил сюда. Если мне нужно, я могу вставить сюда. Просто дай мне знать. Спасибо.

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

Когда мой сайт выходит из строя, я должен перезапустить Apache, а затем перезапустить MySQL, и затем сайт снова заработает. Он падал 2-6 раз в день.

Любая помощь будет принята с благодарностью. Спасибо.

Я достаточно уверен, что с вашей установкой MySQL все в порядке, поэтому при восстановлении таблиц проблем не обнаружено. Это артефакты настоящей проблемы:

У вас просто недостаточно памяти на вашем компьютере, чтобы делать все, что вы пытаетесь сделать.

Из вашей конфигурации:

key_buffer              = 384M

Между этим и по умолчанию для innodb_buffer_pool_size из 128M, это 512M, которые должны быть доступны Все время и если его нельзя выделить при запуске или перезапуске MySQL, он не запустится.

131210 13:06:25 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
131210 13:06:25 InnoDB: Completed initialization of buffer pool
131210 13:06:25 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131210 13:06:25 [ERROR] Plugin 'InnoDB' init function returned error.

Это не сбой MySQL - это сбой MySQL при запуске - или перезапуске - из-за отсутствия 128 МБ свободной памяти для выделения.

Ошибка 12 - «Недостаточно памяти» - системная память.

Все остальные сообщения в вашем журнале ошибок являются побочными эффектами.

Я подозреваю, что также в вашем журнале вы увидите это:

YYMMDD HH:MM:SS mysqld_safe Number of processes running now: 0

Если этому сообщению об ошибке не предшествует аварийный дамп («MySQL поймал сигнал xx», за которым следует трассировка стека и много отладочной информации), то это, скорее всего, сбой MySQL - ядро ​​убивает MySQL, чтобы попытаться чтобы предотвратить сбой всей системы из-за кризисной ситуации, связанной с доступной памятью. Модель разветвления Apache печально известна этим - по мере того, как ваш сайт становится загруженным, Apache порождает больше детей, у каждого из которых есть аппетит к памяти.

Вы, вероятно, найдете доказательства этого в своих системных журналах.

Xxx xx xx:xx:xx [machine name] kernel: Out of memory: Killed process xxxx, UID xx, (mysqld).

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

Для подобных сценариев см. Также: