Задержка при отображении страницы
Добрый день!
С Новым годом всех!
Помогите разобраться в следующем: есть сайт на MODX Revolution 2.3.2-pl (traditional), всё это дело размещено на Linode
Всё работает, в принципе, нормально. Однако, замечено, что при открытии страницы браузер сначала думает секунды 2-3, а потом открывает всю страницу. И это никак не зависит от содержимого страницы, т.е. даже если просто пустая страница, то все равно задержка 2-3 секунды есть.
Как с этим бороться? Куда копать?
С Новым годом всех!
Помогите разобраться в следующем: есть сайт на MODX Revolution 2.3.2-pl (traditional), всё это дело размещено на Linode
Всё работает, в принципе, нормально. Однако, замечено, что при открытии страницы браузер сначала думает секунды 2-3, а потом открывает всю страницу. И это никак не зависит от содержимого страницы, т.е. даже если просто пустая страница, то все равно задержка 2-3 секунды есть.
Как с этим бороться? Куда копать?
Комментарии: 22
Есть дополнение debugParser оно поможет выявить проблему, но что то мне подсказывает что возможно идет долгий ответ от dns серверов.
Может, оно? modx.pro/hosting/2518-brake-linode/
не очень похоже. Сам скрипт выполняется очень быстро, а вот ожидание первого бита от сервера (TTFB) очень большое:
это тестовый скрипт Василия. А если открыть пустую страницу из MODX, то TTFB до 2 секунд доходит.
У меня на Линоде локация в Далласе. Может и правда переехать?
это тестовый скрипт Василия. А если открыть пустую страницу из MODX, то TTFB до 2 секунд доходит.
У меня на Линоде локация в Далласе. Может и правда переехать?
TTFB — это время отдачи первого байта, то есть, скорость генерации страницы PHP.
Если TTFB высокий, значит PHP медленно работает. Для сравнения можно попробовать открыть статичную HTML страницу, а не PHP.
Если TTFB высокий, значит PHP медленно работает. Для сравнения можно попробовать открыть статичную HTML страницу, а не PHP.
а как ускорить его работу?
Попробовал статичную и динамичную страницу с одинаковым контентом грузить. Статичная стабильно грузится с одним и тем же временем (~185ms), а динамическая скачет от 200ms до 4s.
Попробовал статичную и динамичную страницу с одинаковым контентом грузить. Статичная стабильно грузится с одним и тем же временем (~185ms), а динамическая скачет от 200ms до 4s.
Проверь работу php из консоли скриптом из моей заметки. Если будет больше 0.2-0.6 то пиши в поддержку Linode и жалуйся на тормоза.
Если в консоли скорость нормальная — то разбираться нужно с сайтом.
Если в консоли скорость нормальная — то разбираться нужно с сайтом.
положил файл со скриптом в корень сайта
запускаю. Результат: 0.087812900543213
А время TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.
Я так понимаю, что в Linode жаловаться смысла нет (скрипт же быстро выполняется), и сайт тоже вроде как не причем, т.к. я же просто файл запускаю, минуя всю начинку MODx. Остаются настройки PHP и NGINX, а их я брал из инструкции Василия по настройке сервера.
<?php
$time = microtime(true);
for ($i = 1; $i <= 1000000; $i++) {
$x = rand();
}
echo microtime(true) - $time;
запускаю. Результат: 0.087812900543213
А время TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.
Я так понимаю, что в Linode жаловаться смысла нет (скрипт же быстро выполняется), и сайт тоже вроде как не причем, т.к. я же просто файл запускаю, минуя всю начинку MODx. Остаются настройки PHP и NGINX, а их я брал из инструкции Василия по настройке сервера.
То есть, скрипт из консоли сервера выполняется быстро, а через браузер до 2х секунд?
Я правильно понял?
Я правильно понял?
не совсем. Если честно признаться, то я не совсем понял в какой консоли и как его запускать, поэтому просто создал в корне сайта файл 123.php и запустил его в браузере.
Сам файл выполняется быстро (Результат: 0.087812900543213). Но, я смотрю время загрузки его в браузере (F12, вкладка Network, и несколько раз F5). И вижу там, что TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.
Сам файл выполняется быстро (Результат: 0.087812900543213). Но, я смотрю время загрузки его в браузере (F12, вкладка Network, и несколько раз F5). И вижу там, что TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.
Ну а ты не думал о том, что сигналу нужно еще как-то дойти до тебя и мерять время загрузки страницы в собственном браузере не совсем корректно?
Или у тебя идеальный интернет без задержек и тормозов?
Если скрипт выполняется за 0.08 — всё в порядке. Для независимого тестирования сайта есть www.webpagetest.org/, loadimpact.com/ и другие сервисы.
Или у тебя идеальный интернет без задержек и тормозов?
Если скрипт выполняется за 0.08 — всё в порядке. Для независимого тестирования сайта есть www.webpagetest.org/, loadimpact.com/ и другие сервисы.
Проблема решилась? Ибо похожая ерунда. У меня Waiting (TTFB) по 2-3 сек. При этом все остальные запросы максимум 10-11мс. Скрипт выполняется даже с браузера за 0.4 сек, с консоли за 0.2 сек. Все вызовы на сайте кешируемые. Заметил такое залипание при выборе новости из списка новостей, где используется getPage. Куда копать? Я так понял проблема не в настройках nginx & php5-fpm.
TTFB в MODX — это время полной генерации всей страницы.
Потому что он отдаёт страницу на вывод только после того, как она готова, никаких промежуточных echo (а значит, и байтов) нет.
Копать в оптимизацию скорости генерации страницы, ориентируйся на плейсхолдер [^t^].
Потому что он отдаёт страницу на вывод только после того, как она готова, никаких промежуточных echo (а значит, и байтов) нет.
Копать в оптимизацию скорости генерации страницы, ориентируйся на плейсхолдер [^t^].
[^qt^] — 0.0000 s — время запросов к БД;
[^q^] — 0 — количество запросов к БД;
[^p^] — 2.4605 s — время работы PHP скриптов;
[^t^] — 2.4605 s — общее время генерации страницы;
Браузер отдает эту же страницу за 2.73с из них 2.47с это Waiting (TTFB).
Таки да, выходит что MODx долго генерирует страницу. Но getResources, getresourceField, ultimateparent вызываются без знака "!", а значит кешируются. Все возможные аякс запросы асинхронные.
Можете глянуть на www.rnpp.rv.ua
[^q^] — 0 — количество запросов к БД;
[^p^] — 2.4605 s — время работы PHP скриптов;
[^t^] — 2.4605 s — общее время генерации страницы;
Браузер отдает эту же страницу за 2.73с из них 2.47с это Waiting (TTFB).
Таки да, выходит что MODx долго генерирует страницу. Но getResources, getresourceField, ultimateparent вызываются без знака "!", а значит кешируются. Все возможные аякс запросы асинхронные.
Можете глянуть на www.rnpp.rv.ua
А может быть всегда 0 запросов к БД? Ато я себе это не представляю.
Так было в старых версиях MODX Revolution. Ты давно обновлялся?
Да, у меня 2.2.8 еще стоит :)
Ну вот и разгадка.
Проблема была в ограничении количества запросов к серверу в секунду. Увеличил лимит, решил проблему
Это вы про keepalive_requests? Или limit_req?
limit_reg_zone… rate XXr/s
Для MODX есть кэширующий плагин для уменьшения времени отклика сервера: GITHUB modxExtraCachePlugin
тут есть прогрев кэша и хранение сессий.
тут есть прогрев кэша и хранение сессий.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.