Видя эту заметку в mysqld.log:
[Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.)
Кажется, здесь есть упоминание о чем-то вроде этого: экземпляр MySQL останавливается, «делает индекс SYNC»
Мой вопрос: какие действия следует предпринять, если таковые имеются, когда эта заметка видна в журналах?
Версии MySQL и ОС:
mysql-community-server- 5.7.9 -1.el7.x86_64
centos-release-7-1.1503.el7.centos.2.8.x86_64
Запуск SHOW VARIABLES LIKE 'innodb%'; как предложено показывает:
innodb_page_cleaners | 1
источник
Мы сталкивались с одной и той же проблемой на разных клиентах и обнаружили, что проблема была связана с установкой значения innodb_lru_scan_depth со значения по умолчанию 1024 до 128. Хотя снижение этого значения сокращает время, затрачиваемое на обработку транзакции, особенно в рабочих нагрузках, связанных с записью Я считаю, что установка слишком низкого значения сделает буферный пул неспособным продолжать очистку некоторых из его буферов и грязных страниц буферного пула.
В нашем случае мы наблюдали резкое улучшение, увеличив значение со 128 до 256, но в целом правильное значение зависит от оборудования и типа нагрузки. Хитрость заключается в том, чтобы найти правильное значение между повышением производительности OLTP и разрешением MySQL поддерживать буферный пул в чистоте, чтобы не вызывать page_cleaner для выполнения большой работы, как указано в приведенном выше сообщении ( "InnoDB: page_cleaner: 1000ms предназначенный цикл заняло 15888мс " ).
Значение может быть изменено динамически без перезапуска MySQL, например
источник
innodb_lru_scan_depth = 256
где-нибудь в вашемmy.cnf
пути загрузки.Этот поток StackOverflow может быть полезен ...
/programming/41134785/how-to-solve-mysql-warning-innodb-page-cleaner-1000ms-intended-loop-took-xxx
Это в основном означает, что ваша БД получает слишком много записей, в результате чего BufferPool заполняется грязными значениями. Это заставляет PageCleaner действовать и очищать грязные страницы. Поскольку было слишком много грязных страниц, чем обычно, PageCleaner потребовалось больше времени для очистки буфера.
innodb_lru_scan_depth
Определенная переменная контролирует, сколько сканирования буферного пула должно быть сделано для очистки. Это может быть либо большое значение, либо пропускная способность записи системы действительно высока, что приводит к большому количеству грязных страниц.источник