Мы используем стек LAMP, который включает MariaDB 10.5.15 на Centos 7. Это выделенный сервер с 4 процессорами и 8 ГБ ОЗУ.
Никогда не было проблем до последних нескольких недель, когда я заметил медленные запросы, занимающие 8-9 секунд в журнале медленных запросов.
Эти запросы относятся к нескольким базам данных INNODB, но всегда к большим таблицам (т. е. более 10 000 строк). Они всегда происходят между часами 6am и 8am.
Рассматриваемые таблицы имеют индексы, и одни и те же запросы обычно выполняются менее чем за секунду.
Я обнаружил, что, зайдя на сервер в 8 утра в воскресенье и запросив эти большие таблицы с помощью простых операторов select, они выполнялись за 8-9 секунд. Затем до конца дня, даже после полуночи, любые запросы к этой таблице будут выполняться быстро.
С 6 до 8 утра все «оживает» после периода бездействия в ранние часы.
Кажется, что есть какой-то кеш, который остывает и нуждается в разогреве, но я не уверен, почему это вдруг начало происходить после многих лет беспроблемного использования. Я не знаю, чтобы на сервере в одночасье выполнялся огромный процесс, и когда это происходит, сервер не находится под нагрузкой.
Мы отслеживаем загрузку процессора 24/7 и периодически проверяем количество подключений к Apache и MariaDB, которые остаются умеренно низкими в течение дня. Обычно свободно около 3 ГБ памяти без учета буферов и кеша.
Редактировать
К своему стыду, я обнаружил, что рассматриваемые медленные запросы на самом деле не использовали индексы и выполняли полное сканирование таблицы. Первоначальный запрос может занять несколько секунд, а в остальное время даже полное сканирование таблицы занимает меньше секунды. Я предполагаю, что это какой-то дисковый кеш, который остынет за ночь.
Хотя проблемы с производительностью при полном сканировании таблицы могут показаться обычными, все же кажется странным, что это внезапно стало проблемой ни с того ни с сего.