Как понять, почему сервер иногда долго отдает сайт?
Время от времени бывает, переходишь по ссылке на сайте или перезагружаешь страницу и она уходит в ступор на 2 минуты, очень долго грузится потом выдает. Если сбросить загрузку и перезагрузить еще раз то мгновенно загружает, или допустим еще раз по ссылке кликнуть, то сразу. Потом никаких проблем, сайт летает через час-полтора опять какой-то такой запрос подзависает и опять та же история. Куда копать? Что смотреть? В логах nginx все норм, что может тупить? Centos7+php-fpm+mariadb
freeeeez, не обязательно. Результат медленного запроса может писаться на час-полтора в кеш. Поэтому через час-полтора его результата в кеше уже нет - и делается вновь медленный запрос к базе.
Дмитрий Свиридов, проблема возникает даже на тех страницах, на которых даже теоретически не может быть тяжелых запросов, допустим на странице статичного лендинга где 1-2 простых запроса типа SELECT, раз 5-6 за день может произойти
freeeeez, сделай логирование. Можешь фиксировать время, когда пришел запрос и время, когда сформировался ответ, вычитать из второго первое - и, если получилось более 30 секунд, писать в логи. Это чтобы все подряд не писать. Фиксируй по шагам, в какое время что происходило - тогда локализуешь проблему..
мне кажется у меня что-то с Nginx или с MariaDB, потому как даже phpMyAdmin может так затупить или Roundcube долго грузится, но повторный запрос сразу обрабатывают
freeeeez, в общем, есть вариант еще такой. Напиши скрипт, который будет запускаться кроном раз в 5 минут (например) и дергать какие-то урлы твоего сайта - и понаблюдай, сколько по времени он отвечает, в какие моменты подвисает и т.п. Можно даже несколько скриптов сделать: один будет страницы сайта дергать, а второй будет ходить в базу и делать запрос select 1 (например).