У меня есть стек LAMP с Percona MySQL.
С помощью New Relic я отслеживаю / настраиваю / настраиваю свой новый сервер, готовый к использованию вживую.
Что меня раздражает, так это то, что я периодически получаю (обычно после периодов бездействия), когда время отклика БД (для простых запросов, которые обычно отвечают в течение нескольких мс) резко возрастает и портит мои средние значения.
Как будто кеш выгружается, но это не так. У него 3 ГБ оперативной памяти, потребление составляет около 512 МБ и выгружено 0 байт.
См. График.
Есть идеи, что могло быть причиной этого? Это не так вероятно, что это будет проблемой в производстве, так как будет постоянный поток трафика, поддерживающий все это, но я все равно хотел бы исследовать, если что-то не происходит.
Спасибо.
Просто выстрел: возможно, разрешение DNS-имени сервера базы данных.
DNS действительно может быть проблемой. Даже если MySQL находится на локальном хосте, он выполняет DNS-запрос, если в my.cnf нет пропуска имени-разрешения. И да, это может занять 500 мс и больше.
Я бы собирал медленный журнал с long_query_time = 0 и анализировал журнал с помощью pt-query-digest. Он выявит возможные проблемы с запросами, такие как время блокировки дольше обычного, неправильный план выполнения запроса, иногда длинные запросы ввода-вывода.
Если шипы повторяются ежедневно, соберите журнал примерно в это время.
Вы также можете увеличить подробность медленного журнала, это даст больше деталей для анализа.
Сравните график времени ответа на запрос с графиком возраста контрольной точки InnoDB - может быть, InnoDB в это время выполняет штормовую очистку?
Мое лучшее предположение без более тщательного изучения - автоматическая очистка или синхронизация транзакций с диском. Вы сказали, что неправильное поведение является периодическим, какой период? Период совпадает с какими-либо настройками mysql?