Почему сайты на сервере работают медленно?

63f8df0f96ce2422529016.png
Скрин не на пике посещаемости.
Два сайта на вордпресс. Один 300000 - 400000 просмотров в сутки. Второй 2000-3000.
Диск nvme. Поставил wp rocket и object cache pro, работают через cloudflare . Не помогает особо.
На пике посещаемости страница может грузится 10 сек и больше.
mariadb processlist status
Сделал анализ медленных запросов. Они есть, но в основном это запросы поиска и они выполняются Query_time: 0.222879 максимум.
query monitor показывает, что все запросы для генерации страницы занимают 0.18 секунд, а сама страница грузится 28 секунд.
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 7
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Гадание на листьях опавших с ветвей сакуры нифига не даст.

Тупо ставьте метки по ходу выполнения кода, в конце считайте время выполнения кусков, смотрите какой кусок тормозит, разбивайте его на более мелкие таймфреймы, пока не вычлените проблемный кусок. Из опыта - 90% что тормозят запросы в бд, но вышеописанным способом это легко вычисляется.

Так же есть вероятность что проблема не на бэкенде, а в подгрузке ресурсов типа фонтов или скриптов со сторонних сервисов, которые сейчас работают не очень стабильно (ну да, "а что случилось?"). Опять же легко проверяется разницей между выполнением всего кода и полной загрузкой страницы.
Ответ написан
karabanov
@karabanov Куратор тега Ubuntu
Системный администратор
На скриншоте LoadAverage около 8 при 48 ядрах и полно свободной памяти, то есть сервер не нагружен, если при этом приложение работает медленно, можно предположить, что оно ожидает чего-то. Может оно обращается к внешнему API которое медленно отвечает?

Рекомендую проверить настройки DNS и убедится, что используется локальный кеширующий DNS сервер, а не публичный - дело может быть в том, что публичные DNS серверы тротлят если к ним часто обращаются, так что если приложению надо обращаться к внешнему API оно будут часто резолвить имена, что приведёт к задержкам.
Ответ написан
@Stensed
из примитивного - найдите в гугле сервисы анализаторы скорости загрузки сайта и проверьте ваш сайт.
вот первый из гугла pagespeed.web.dev либо loading.express и покажет какой ресурс сколько времени отвечает.
может действительно подгрузка других ресурсов с сторонних сайтов задерживает
Ответ написан
Комментировать
veshetu
@veshetu
web-dev
strace -p PID

посмотри что внутри процесса php.
Ответ написан
Комментировать
@Drno
а че он у Вас в swap уполз? мож ему оперативки не хватает?
Ответ написан
Подключи APM к приложению, добавь системы мониторинга системы и узнаешь что и когда тормозит. Тогда от этого можно отталкиваться. Приложи скриншоты нагрузки СУБД с ее характеристиками, количества соединений, список долговисячих запросов, тогда будет о чем говорить.
А так, судя по нагрузке на скриншоте, как заметил Александр Карабанов , в среднем 1/6 процессоров нагружены на 100%, что не является потолком для нагрузки. Остальное время система/приложение ждет чего-то. Возможно, при работе с СУБД или при запросах наружу.
Ответ написан
Комментировать
@darkfire13
Здесь и сейчас dieg.info
Система явно не загружена. Прежде чем лезть в дебаг, не важно на уровне SQL или скриптов в браузере или тем более проверки DNS. Соберите статистку скорости открытия сайта минимум из трех разных точек мира (расположения вашей аудитории). Может у вас и нет проблем?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы