Как измерить скорость ответа сервера


Скорость ответа сервера при обращении к сайту можно измерить при помощи утилит wget или curl, запускаемых в цикле for. Это позволяет избежать кэширования браузером. Если обращаться к сайту через браузер данные будут кэшироваться при первом обращении. При каждом последующем содержимое страниц станет отдаваться пользователю быстрее.

Для проверки скорости отдачи контента сервером такой способ не подходит и следует использовать консольные утилиты, которые позволят избежать браузерного кэширования.


Скорость ответа сервера и ее измерение


Используя curl можно обращаться к определенному адресу указывая задержку.

Адрес предполагает указание протокола (http или https), доменного имени и скрипта/файла (опционально).

$ time for i in {1..50}; do curl http://example.com/test.php; sleep 0.1; done

Запросом, представленным выше можно с задержкой 0.1 секунд попытаться обратиться к скрипту 50 раз. В консоль при этом будет выведено среднее время обращений:

real 0m11.313s
user 0m0.260s
sys 0m0.140s



Получен результат 11 секунд на 50 запросов при том что между запросами была пауза 0.1 секунды. Это хороший результат, говорящий о том что проблем нет, сервер отвечает быстро. Задержки в несколько секунд на каждый запрос говорили бы о проблемах.

С количеством запросов можно экспериментировать.


скорость ответа сервера

Важно не перегружать сервер запросами и при количестве запросов более пары десятков добавлять задержки.


Если запускать такие проверки с большим количеством запросов на публичные ресурсы — адрес, с которого идут запросы, может быть заблокирован, также возможные юридические последствия.



Результаты будут очень сильно зависеть от особенностей работы программного кода. Результаты будут зависеть от оптимизации северного ПО и используемого аппаратного обеспечения.


Таким образом взяв один сайт и разместив его на двух разных серверах с одинаковой конфигурацией можно сравнивать скорость ответа. Выбирать таким образом лучшее аппаратное обеспечение и настройки.



Как выяснить что отвечает долго: сайт или сервер


Исключить влияние кода можно проводя такие же тесты при обращении к статическому файлу.

В корне сайта можно создать файл text.txt, добавить в него пару слов и обращаться к файлу.

В этом случае будут исключены любые задержки вызванные работой кода и интерпретатора PHP.


Можно разместить в корне файл с самым простым PHP кодом, например с функцией выводящей настройки PHP.

При таком варианте тест будет учитывать время на работу интерпретатора PHP и настройки для PHP. Но при этом будет исключаться код сайта и возможные задержки вызванные его работой. За счет использования простейшего скрипта появляется возможность абстрагироваться от кода приложения.



Если тесты с текстовым файлом и простейшим скриптом показывают, что задержки нет, но сайт при этом открывается долго, значит причина в сайте.

Для анализа причин задержек в работе реального приложения можно использовать сервис Google Developers Pagespeed Insights.

Он дает рекомендации позволяющие ускорить веб-приложения (статья о сервисе Google Developers Pagespeed Insights).

Сказать спасибо