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

Как определить причину нехватки места в InnoDB?

Сайт часто выходил из строя почти ежедневно и находится на Digitalocean VPS

Основываясь на некоторых предложениях, которые я получил на форуме DO, я запустил mysqltuner и увеличил размер буферного пула innodb до 341M, а размер файла журнала innodb до 64M

С тех пор сайт становится меньше, но время от времени происходит, как прошлой ночью.

В разделе «InnoDB: невозможно выделить память для буферного пула» много журнал ошибок mysql - pastebin

Я назначил пространство подкачки, запустил netstat, vmstat и т. Д., И вроде все в порядке.

Но очевидно, что у меня заканчивается память, как показывают журналы. Как мне диагностировать причину нехватки памяти на моем сервере? Является ли причиной проблемы неисправный плагин, apache или что-то еще, а не просто обновление капли?

2020-07-15T21: 33: 55.734143Z 0 [Примечание] InnoDB: инициализация буферного пула, общий размер = 384M, экземпляры = 1, размер блока = 128M 2020-07-15T21: 33: 55.748097Z 0 [ОШИБКА] InnoDB: mmap (137428992 байта) не удалось; ошибка 12 2020-07-15T21: 33: 55.751593Z 0 [ОШИБКА] InnoDB: Невозможно выделить память для буферного пула

Сколько у вас оперативной памяти? Либо это очень крошечный, или у вас много оперативной памяти занято другими вещами.

Проблема кажется, что MYSQL не получает достаточно памяти для добавления к размеру буферного пула. При настройке параметра необходимо соблюдать осторожность, если значения слишком велики, у вас может возникнуть проблема с зависанием сервера. Размер буферного пула InnoDB должен быть установлен на 50% доступной ОЗУ в среде с низким уровнем подключения и 30% в среде с высоким уровнем подключения. Вы можете узнать больше о параметрах здесь https://www.skynats.com/blog/mysql-server-optimization/

Вы можете попробовать MySQL Workbench, которая бесплатна и весьма полезна для подобных задач.