ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

$upstream_response_time != времени отв ета бэкэнда


  • To: nginx-ru@xxxxxxxxx
  • Subject: $upstream_response_time != времени отв ета бэкэнда
  • From: cronfy <cronfy@xxxxxxxxx>
  • Date: Fri, 22 Oct 2010 19:43:13 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:from:date :message-id:subject:to:content-type:content-transfer-encoding; bh=PZrEIpeXUCxHN52Hfpf8qpjtH5eOYRL9FgpqZcKZQec=; b=DSOy9qGEOXF5BlpyTpOQF4k+rEkRsQZR7WK49tOIOhdfEZLJxz0GIr5OezrnaXHaOf 2JxGr+6ybAavjMxUmLXwUkQFXkvGBv/Cv9AvaLeCzG9jOC1M3xwsQ/C3qoCxBjUeQEwY MiLlMtuxWf122vBoWhtoEoNcUgz+sl7gLPMVw=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type :content-transfer-encoding; b=U/Vai2sMefwizpG2nh8K8h2X/0YkqzGnm+c6gpfdrU4xMZrZ5RwsZkG2XkF+EBLg8c QNqHucWx1LYqgUqc/UTMaOJ8EOvbex/vSG/1D8EbJjmlXnKILD9NlLFai/luzIVMnAc6 y+Lcogru14apGhIIioNV2n8FKfMLDu6MiUQ3k=

День добрый.

Решил поэкспериментировать с upstream_response_time - посмотреть, за
сколько времени бэкэнд отдает ответ. Когда-то давно Игорь писал:

>> т.е. время, за которое реально бэкенд генерил ответ равно
>> $upstream_response_time минус $request_time?
IS> Нет, это время как раз $upstream_response_time.
IS> $upstream_response_time - это время от вызова connect() и до закрытия
IS> соединения с бэкендом.

Простой тест: добавляем в server {} вызов перловой ф-ии, которая
делает sleep(1).

perl_set      $slp NGX_PERL::sleepAWhile;

log_format TIME         '[$time_local] $upstream_response_time $request_time' ;

server {
 ...
 set $s $slp;
 location / {
    ...
    proxy_pass ...
 }
}

В итоге в логе время $upstream_response_time и $request_time почти
всегда равны друг другу и составляют чуть более секунды:

[22/Oct/2010:19:23:44 +0400] 1.077 1.141
[22/Oct/2010:19:24:24 +0400] 1.078 1.078
[22/Oct/2010:19:24:25 +0400] 1.050 1.050
[22/Oct/2010:19:24:36 +0400] 1.161 1.161
[22/Oct/2010:19:24:45 +0400] 1.048 1.048
[22/Oct/2010:19:24:47 +0400] 1.052 1.052
[22/Oct/2010:19:24:58 +0400] 1.130 1.130


Видимо, в nginx connect() делается несколько раньше, чем выполняется
set $s. Фактически получается, что upstream_response_time - это не
время обработки запроса бэкэндом, а время с момента начала исполнения
location, включая все rewrite'ы, до закрытия соединения с бэкэнда.

Вопросы: это баг или фича и можно ли каким-либо образом все-таки
получить чистое время, за которое данные были получены от бэкэнда?

Спасибо.

-- 
// cronfy
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.