Сегодня разберем, как можно узнать время отклика веб-сайта из командной строки Linux.
После прочтения материала, Вы научитесь определять переменные и тайминги:
- выполнение разрешения имени в dns;
- ТCP соединение с сервером;
- начало передачи файла;
- передача первого байта;
- полная загрузка страницы.
Для тестирования воспользуемся программой cURL.
cURL — кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов таких, как FILE, FTP, FTPS, HTTP, HTTPS и многих других.
cURL имеет полезную опцию: -w для вывода информации на стандартный вывод после завершенной операции. У него есть некоторые переменные, которые мы можем использовать, чтобы протестировать различные тайминги сайта, перечисленные выше.
Мы будем использовать некоторые временные переменные, которые могут быть переданы в заданном формате в виде буквенной строки или внутри файла.
Так что откройте свой терминал и выполните команду ниже:
curl -s -w '\nTesting 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 http://www.google.com
- time_namelookup — время в секундах, которое прошло с начала до завершения определения ip-адреса по имени.
- time_connect — время в секундах, которое прошло с начала до завершения соединения TCP с удаленным хостом (или прокси).
- time_pretransfer — время в секундах, которое прошло с начала до начала передачи файла.
- time_starttransfer — время в секундах, прошедшее с начала до момента, когда первый байт должен был быть передан.
- time_total — общее время в секундах, в течение которого выполнялась полная операция (разрешение в миллисекундах).
Если формат слишком длинный, вы можете записать его в файл и использовать следующий синтаксис:
curl -s -w "@format.txt" -o /dev/null http://www.google.com
-s — указывает curl работать молча.
-w — вывести информацию на стандартный вывод.
-o — используется для перенаправления вывода (здесь мы отбрасываем вывод, перенаправляя его в /dev/null).
Для сайтов HTTPS вы можете запустить команду ниже:
$ 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.google.com
- time_appconnect — время в секундах, которое прошло с начала до завершения SSL-соединения/рукопожатия с удаленным хостом.
- time_redirect — время в секундах, которое потребовалось для всех шагов перенаправления, включая поиск имени, подключение, предварительный перенос и передачу до запуска последней транзакции; он вычисляет полное время выполнения для нескольких перенаправлений.
Важные моменты, которые следует отметить:
- Вы заметите, что значения времени отклика продолжают изменяться (из-за нескольких факторов) при выполнении разных тестов, поэтому рекомендуется собрать несколько значений и получить среднюю скорость.
- Во-вторых, из результатов приведенных выше команд видно, что доступ к веб-сайту через HTTP намного быстрее, чем через HTTPS.
Для получения дополнительной информации см. справочную страницу cURL:
man curl