Re: Нулевой upstream_response_time
Igor Sysoev
is at rambler-co.ru
Mon Nov 14 19:30:48 MSK 2005
On Mon, 14 Nov 2005, Alexey Polyakov wrote:
> То есть (2)-(1) - это время, через которое бекенд начал отвечать?
> Я думал, что это время, которое бекенд затратил на передачу целиком ответа.
Нет, (2) - это время когда nginx закрыл соединение с бэкендом.
Между (1) и (2) должен быть как минимум один вызов kevent() и gettimeofday().
> On 11/14/05, Igor Sysoev <is at rambler-co.ru> wrote:
>> On Sun, 13 Nov 2005, Alexey Polyakov wrote:
>>
>>> Наблюдаю у себя такую странность:
>>> сайт индексируется htdig'ом, который валит подряд много запросов к
>>> страницам, бекенд - Апач/PHP.
>>> Для многих из них в лог пишется 0.000 в качестве значения
>>> upstream_response_time.
>>> Реально же, при тесте например с помощью ab, processing time на таких
>>> страницах никогда не меньше 10-12мс.
>>> ОС - FreeBSD 5.4, nginx - 0.3.7.
>>> С чем подобное поведение может быть связано?
>>
>> $upstream_response_time считается так:
>>
>> 1) kevent() возвращает новые события, nginx запоминает время (1) в ms.
>> 2) nginx принимает соединение, читает запрос, определяет, что запрос
>> уходит к прокси, запоминает текущее время (1).
>> 3) nginx соединяется с бэкендом, если это localhost, то соединение
>> устанавливается сразу же. Если нет, то факт соединения возвращается
>> через kevent().
>> 4) nginx передаёт запрос и ждёт ответ.
>> 5) наличие ответа возвращается через kevent(), nginx опять запоминает
>> время (2).
>> 6) если овет передан полностью, то $upstream_response_time равен (2)-(1).
>>
>> Как видно, nginx не пытается измерить время точно.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list