У меня ~ 1,5-2 миллиона просмотров страниц в день, сайт работает на 2 серверах. Один для mysql, другой для всего остального. Ящик mysql имеет загрузку 3, интерфейс обычно 0,0-0,1. Оба являются двухъядерными четырехъядерными с оперативной памятью 8 ГБ с дисками SAS в raid5. ЦП большую часть времени простаивает, iowait не существует.
Я запускаю nginx, memcache, а сайт построен на php. В половине случаев все работает идеально, а в других случаях происходит серьезное отставание, когда загрузка страницы занимает 10-15 секунд. Время выполнения страницы всегда очень маленькое, но кажется, что он зависает, ожидая чего-то, прежде чем действительно загрузит страницу. Что еще более странно, так это то, что это происходит только с 1 файлом на сайте (но это тот, к которому чаще всего обращаются, который фактически загружает контент на сайт). Другие страницы всегда работают очень быстро, даже если фактическое содержимое загружается за 15 секунд.
У меня установлен плагин nginx_stats, и если я его отслеживаю, всплески задержки происходят, когда столбец записи начинает превышать 100, и это часто бывает ... вплоть до 500-1000.
Он делает это в совершенно случайное время ... не при интенсивном трафике ... он может делать это посреди ночи и отлично работать в 17:00, когда трафик наиболее высок.
Любые идеи?
Не зная больше, я считаю, что причиной проблемы является ваш сервер базы данных. Проверьте нагрузку, ожидание ввода-вывода, использование памяти / подкачки и другие обычные подозрения на сервере БД, чтобы убедиться, что на сервере нет конкуренции за ресурсы.
Попытайтесь определить, есть ли определенный запрос, который убивает коробку, включите журнал медленных запросов и дайте ему пройти период медленности и посмотрите на него, нет ли запросов, которые можно оптимизировать.
Вы сказали, что "столбец записи" высокий, это свидетельствует о записи в базу данных? Запись обычно дороже чтения, и вы можете захотеть настроить подчиненное устройство репликации, на которое вы можете выгружать некоторые или все операции чтения.
Я предполагаю, что как только вы включите журнал медленных запросов, вы обнаружите, что запрос-виновник убивает базу данных и все замедляет.