Задать вопрос
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Виктор Таран, ок, понял, спасибо большое, наконец-то разобрались, значит, - ура!
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Протестировал с другого сервера из того же города (Дубай).
    т.е. оба сервера находятся там в ОАЭ, совсем рядом.
    DNS на CloudFlare.
    Локальных кэширующих DNS нет.

    Запускал данный скрипт с VPS, расположенной рядом с dedic продом, 2-мя способами:
    1. Без модификаций hosts. (DNS запросы идут в интернет)
    2. С модификацией hosts (явно прописал IP)

    Оба сервера подключены к интернет через серый IPv4, подсеть датацентра. Без IPv6.

    Результаты:
    1. Продолжительность теста: ~1 час. Результат: 16 запросов словили ощутимую задержку до 5сек (см. скрин в прикреплении)
    676ace25c74c2198207958.jpeg

    2. Продолжительность теста: ~2 часа. Результат: 12 просадок с временем ответа всего до 1 сек, за ДВА часа.
    676ace39e6508132973377.jpeg

    Получается, сам CloudFlare DNS даёт такую просадку? Получается, так.
    В варианте 2 (с hosts), случаи, когда запрос занял ~1сек, рассматриваю как погрешность из-за прочего сетевого трафика. Это не 5 и не 17 секунд на запрос, всё-таки.

    Получается, раскрутке и продвижению сайта среди юзеров того региона (ОАЭ) это может мешать, и они могут ловить эту задержку в 5 секунд,
    а при доступе из РФ - все 17 секунд - и всё это в 0,44% случаев. Получается, так.
    И всё из-за DNS..

    А чтобы исключить проблему - только ставить свои DNS, и больше серверов с балансером на случай задержек в сети(?). Получается, вроде так.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    C munin опыта не имел, - разбираюсь, что и как
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Только что:
    из браузера запрашиваю robots.txt: проблема ЕСТЬ (17 сек)
    но локально запущенный на сервере скрипт не выдаёт задержек (в hosts 127.0.0.1 на URL сайта там прописан, обращение идёт на 127.0.0.1)
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Виктор Таран, накапливаю результаты, пока что ждём.
    Прописал на этом же сервере в hosts имя домена, и с того же сервера запустил скрипт. Пока всё гладко.
    (больше не от куда запускать, это единственная машина)
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Виктор Таран, ушёл пробовать, спасибо большое! За скрипт тоже, благодарю!
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Также, удалось поймать эту же задержку при загрузке просто png-картинки 150х150px из корня веб-директории.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Удалось поймать глюк на файлике robots.txt
    676303e4433ac862490098.jpeg

    Поймать глюк очень трудно: может проявиться уже через 20 минут, может через несколько часов, а может только на следующий день.

    Также, удалось поймать этот же глюк с задержкой 17 секунд на "пустом" файле php, который выводит только текущее время (new DateTime) и простую строку а-ля HelloWorld.

    Удаление куки, очистка данных браузера, перезагрузка браузера, - погоды не делают (думал, может где-то глюк в кэше, мало ли).
    Пробовал также принудительный вызов session_destroy() со стороны PHP в качестве эксперимента.
    Принудительно не получается вызвать проблему. Природа явления пока не ясна.

    Примечательно:
    1. В системе свободно всего 3Гб оперативной памяти из 64Гб. Из них 50+Гб занимают кэши и прочее: кэш БД, +много пулов php-fpm, + много воркеров nginx. (сервер под постоянной нагрузкой со стороны ERP через Woocommerce REST API. Ошибок по этой части в логах нет.)

    2. На системном разделе SSD свободно всего ~5-7Гб.

    3. В логах не нашёл явной причины обсуждаемой проблемы. Перелопатил всё: системные логи ОС, логи nginx, php-fpm, mariadb и все остальные.

    Также: как только словил данную проблему, повторно словить не получается. Сразу после этого всё "летает". Приходится по-новой подолгу ждать, когда проблема проявится.

    На что только не думал: и на медленное создание новых воркеров nginx, и на стек TCP, но ведь ОЗУ свободной хоть сколько-то есть, всё выглядит достаточно цивильно. Не понимаю

    +ещё: TCP slow start = 0. Отключен. Дело не в нём.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Спасибо большое.
    Делал именно так. Сейчас понял, что забыл потестить без системы кэширования (WP-Rocket).
    Всё остальное перепробовал прям по пунктам.

    Спасибо большое, ещё раз покопаюсь и вернусь позже.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    ky0, спасибо, пробовал. PHP тестовый скрипт отдаёт норм. Дело в коде, видимо. slow log пустые, почему-то. Остальные логи норм.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    strace снял, добраться до причины не получилось.
    Делал strace nginx, strace php-fpm.
    Эти первые 17 секунд сервер грузит файлы php, судя по strace.

    Проблему это не решило.
    Как ещё проверять, пока не знаю. Вопрос актуален.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Как понимаю, никто толком не знает, в чём дело.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Провёл strace nginx и php-fpm.
    У меня получилось, что в течение этих 17 секунд Wordpress грузит файлы php. Не нашёл явной проблемы именно в куке.
    В моём случае, расход ОЗУ близок к лимитам. Как понимаю, сервер компилит/подгружает все файлы php для нового пользователя, но не для каждого. Памяти не хватает, видимо.

    (3Гб свободно из 64Гб. 50+Гб занимает кэш, сайт под регулярной нагрузкой и имеет большой кэш)
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Оказалось, тормозит в совсем неожиданном месте: при установке cookie для woocommerce.
    Запрос поступает на сервер, дальше setcookie для woocommerce, дальше ~17 секунд система тупит. Затем выставляет куку.
    Что там происходит, не представляю, т.к. отловить снова эту задержку пока не удалось.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Придётся копать strace, видимо.
    Кто-нибудь знает, как правильно мониторить всё, что происходит на сервере при поступлении запроса к сайту?

    Именно с strace опыта нет. Как-то не нужно было.
    По-видимому, нужно мониторить nginx при помощи strace, прежде всего, и дальше по цепочке (PHP и т.д.)
    Вопрос в том: а если проблема, например, где-то в неправильных настройках TCP? За это ведь ОС отвечает. Как это проверить.. не знаю.

    К слову, TCP slow start отключен.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Удалось поймать момент, когда проблема есть.
    Дамп трафика: 67557f6e05694191000606.jpeg
    Вот эти строки появляются моментально. Уже хорошо. Значит сигнал доходит на сервер сразу, и проблема не в DNS. Уже конкретика.

    Придётся копать strace, видимо.
    Написано
  • 17 секунд задержка на первый запрос к серверу?

    @dmitri_kotov_PhD Автор вопроса
    Попробую, спасибо. Думал в эту сторону, но это мне представляется практически нереальным: со стороны сервера запускать tcpdump в произвольный момент, отлавливая не очень часто воспроизводимый случай возникновения проблемы.
    Надеялся, может есть способ более верный и быстрее.
    Но спасибо большое, буду пробовать.
    Написано