Проверка скорости сайта с помощью curl

Зачем проверять скорость загрузки
Скорость загрузки влияет на поведение пользователей и позиции в поисковой выдаче. Даже небольшая задержка ухудшает конверсию и увеличивает отток. Администратору важно мониторить время отклика и быстро реагировать на деградацию.
Коротко о curl
Curl — утилита для передачи данных по URL. Она умеет показывать детальные тайминги выполнения запроса. Под «таймингами» понимают разные этапы: разрешение DNS, установление TCP/SSL‑соединения, начало передачи данных и полное завершение запроса.
Тестируем скорость сайта с curl
Ниже пример для HTTP‑сайта. Команда выводит набор временных метрик и перенаправляет тело ответа в /dev/null.
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://www.howtoforge.comПример ожидаемого вывода:
Testing Website Response Time for :https://www.howtoforge.com/
Lookup Time: 0.511
Connect Time: 0.565
Pre-transfer Time: 0.565
Start-transfer Time: 0.726
Total Time: 0.727
Разбор ключевых метрик
- time_namelookup — время разрешения DNS в секундах.
- time_connect — время до установления TCP‑соединения.
- time_pretransfer — время до момента, когда передача файла была готова начать.
- time_starttransfer — время до получения первого байта (TTFB).
- time_total — общее время операции.
Важно: TTFB — одна из основных метрик для оценки серверной задержки.
Тест для HTTPS
При HTTPS добавляется время установки SSL/TLS (time_appconnect) и время переадресации (time_redirect), если есть редиректы:
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppCon Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://www.howtoforge.comОжидаемый пример:
Testing Website Response Time for :https://www.howtoforge.com/
Lookup Time: 0.511
Connect Time: 0.564
AppCon Time: 0.724
Redirect Time: 0.000
Pre-transfer Time: 0.724
Start-transfer Time: 1.085
Total Time: 1.264
Удобный шаблон вывода в файл
Если не хотите каждый раз писать длинную строку, сохраните шаблон в файл и используйте его через -w “@file”:
Создайте файл:
nano curl_test.txtДобавьте содержимое (именно так, с управляющими последовательностями):
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_redirect: %{time_redirect}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\nЗатем запускайте:
curl -w "@curl_test.txt" -o /dev/null -s https://www.howtoforge.comПример вывода:
time_namelookup: 0.013
time_connect: 0.056
time_appconnect: 0.160
time_pretransfer: 0.160
time_redirect: 0.000
time_starttransfer: 0.511
----------
time_total: 0.753
Вы можете заменить www.howtoforge.com на свой домен или IP.
Чек‑лист для администратора
- Проверить DNS: latency и TTL записей.
- Проверить сертификат TLS и время рукопожатия (AppCon Time).
- Оценить TTFB — если высокая, посмотрите серверную нагрузку и бэкенды.
- Провести трассировку сети (traceroute/mtr) при подозрениях на сеть.
- Сравнить результаты с разных географических точек.
- Повторять тесты в разное время суток для выявления пиков.
Быстрая методология для постоянного мониторинга
- Сохраните шаблон вывода в файл (curl_test.txt).
- Настройте cron‑задачу на сервер мониторинга или на локальной машине для регулярного запуска.
- Логируйте результаты в файл или отправляйте в систему метрик (Prometheus, InfluxDB).
- Настройте тревоги по порогам (например, если time_total > 1.5 с).
Когда curl‑тесты дают ложный результат
- Клиентская сеть перегружена — результаты локального запуска могут быть медленнее реального сервера.
- CDN кэширует контент: первый запрос может быть медленнее, следующие — быстрее.
- Локальные DNS‑резолверы добавляют задержку. Проверьте с публичным DNS (8.8.8.8).
- Если сайт балансируется, запросы могут попасть на разные бэкенды с разными характеристиками.
Альтернативные инструменты
- wget — простая альтернатива, но менее детальная по таймингам.
- apachebench (ab) или wrk — для нагрузочного тестирования.
- WebPageTest, GTmetrix — для клиентских метрик и анализа фронтенда.
- curl + tcpdump/wireshark — для глубокого сетевого анализа.
Примеры сценариев и тесты при приёмке
- Базовый тест: получить time_total < 1 с для страницы с минимальным контентом.
- TLS‑проверка: time_appconnect < 0.5 с.
- Перформанс под нагрузкой: использовать wrk/ab для проверки устойчивости при N одновременных подключениях.
Краткие рекомендации по оптимизации
- Используйте HTTP/2 или HTTP/3, где доступно, чтобы снизить накладные расходы на соединения.
- Включите кэширование в CDN и на стороне сервера.
- Минимизируйте размер критических ресурсов (CSS/JS/изображения).
- Настройте keep‑alive, gzip/brotli и оптимизируйте базу данных.
Важно: curl измеряет сетевые и серверные задержки. Он не заменяет инструментов для анализа фронтенда и рендеринга в браузере.
Критерии приёмки
- Выполнен тест curl с шаблоном и сохранён лог.
- Все ключевые метрики проверены и задокументированы.
- Настроены алерты на существенную деградацию time_total и time_starttransfer.
Однострочный глоссарий
- TTFB — time to first byte, время до первого байта ответа.
- DNS latency — задержка разрешения доменного имени.
- AppCon Time — время установки TLS/SSL.
Итог
curl — быстрый и удобный инструмент для первичной проверки времени отклика сайта. Регулярные тесты, шаблоны вывода и простая автоматизация помогут своевременно обнаруживать проблемы с производительностью.
Примечание: заменяйте URL на ваш домен при выполнении команд и выполняйте тесты из нескольких точек для более точной картины производительности.
Похожие материалы
Microsoft Store открывается сам — как исправить
Скачать и установить appx/appxbundle/msixbundle
Кнопка «Установить» в Microsoft Store не отображается
Полноэкранный режим в Windows 10 — как включить
Восстановление приложений на iPhone и iPad