Я хочу измерить вход в систему через htaccess на некоторые серверы (насколько быстро обрабатывается сервер), и я хочу игнорировать время, потерянное на newtork. Так следует ли вычитать задержку пинга один или два раза? Или мои расчеты неверны
Лучший способ устранить задержку в сети из ваших результатов - это попробовать выполнить тест с локального по отношению к серверу хоста. Это может быть сам сервер, если вы не выполняете тест с высокой нагрузкой (в этом случае обработка «на стороне клиента» будет мешать вашему тесту).
Оценка сетевой задержки аутентифицированного HTTP-запроса по показаниям ping не будет особенно точной, если вы не выполните много чтений.
В любом случае это будет более чем в 2 раза больше времени пинга. Для создания TCP-соединения (здесь я игнорирую постоянные HTTP-соединения) требуется не менее трех IP-пакетов, перемещающихся по сети: SYN-пакет от клиента к серверу, SYN + ACK обратно клиенту и последний ACK от клиента к серверу. . Предполагая, что время в пути от вашего сервера до сервера такое же, как и время в пути назад, то есть 1,5 пинга. IIRC HTTP-запрос, если он достаточно мал, может быть включен в окончательный пакет ACK. После этого будет ответ HTTP, в котором будет хотя бы один пакет. Если один из запросов или ответов больше, чем MTU между вами и сервером, то, конечно, будет больше пакетов туда и обратно.
Если вы отправляете данные аутентификации напрямую, то это так: как минимум 4 IP-пакета, туда + назад + туда + назад, так что 2x ping (то есть два пакета, один там - назад). Но нередко сначала сделать неаутентифицированный запрос, получить ответ 401, а затем сделать аутентифицированный запрос в ответ на него, по крайней мере, удвоив это количество до 8 пакетов.
Кроме того, имейте в виду, что пакеты ICMP / IP, используемые ping по умолчанию, могут иметь другой приоритет в местах на пути к пакетам TCP / IP, используемым для HTTP, и пакеты, содержащие HTTP-запрос и данные HTTP-ответа, будут больше, чем пакеты ping по умолчанию (ping обычно отправляет пакеты с нулевой полезной нагрузкой).
Так что, если вы можете, протестируйте с машины, которая находится в той же локальной сети - удаленное тестирование и попытки угадать, какая часть времени занимает сетевой далекий день, а какая задержка обработки, не даст вам очень точных ответов.
Это зависит от того, как именно вы измеряете. Например, вы измеряете время с момента установления TCP-соединения до получения данных? Или вы измеряете время от момента отправки запроса через TCP-соединение до закрытия TCP-соединения?
Если вы хотите сделать это правильно, вам нужно будет посмотреть, что именно происходит в измеряемом вами временном интервале, посмотреть, сколько «передач обслуживания» требуется, и вычесть это количество раз. Возможно, самый простой способ сделать это - измерить данные на двух разных машинах с разным временем отклика. Затем нанесите их на график и экстраполируйте на нулевое время проверки связи.
Обычно это делается гораздо проще - просто протестируйте с компьютера в той же локальной сети, чтобы время пинга было меньше миллисекунды.
Обратите внимание, что время пинга включает больше, чем просто задержку в сети. Также сюда входит время, необходимое другому компьютеру для формирования и отправки ответа.