Re: $upstream_response_time != времени ответа бэкэнда
Maxim Dounin
mdounin на mdounin.ru
Пт Окт 22 22:47:00 MSD 2010
Hello!
On Fri, Oct 22, 2010 at 08:23:32PM +0400, cronfy wrote:
> >> set $s. Фактически получается, что upstream_response_time - это не
> >> время обработки запроса бэкэндом, а время с момента начала исполнения
> >> location, включая все rewrite'ы, до закрытия соединения с бэкэнда.
> > Тот факт, что perl'овый sleep() оказывается включён в
> > $upstream_response_time - следствие того, что время в nginx'е
> > обновляется только при получении очередной партии событий из ядра.
> > Предполагается, что код не блокируется и соответственно обработка
> > событий происходит быстро.
>
> Ок, а как тогда обстоит дело с if ( -e $file) и try_files? На них
> nginx блокируется и время включается в upstream_response_time или нет?
Если не повезёт - заблокируется, неблокирующихся интерфейсов для
stat()'а не существует. Время, соответственно, включается.
Кроме того, надо понимать что включается также время обработки
других запросов, выполнявшихся на той же итерации цикла обработки
событий (если события из ядра пришли сразу по нескольким
запросам). Любое время в nginx'е - с точностью до времени
обработки партии событий из ядра. Поскольку
$upstream_response_time - разность двух значений времени,
погрешность соответственно 2*(время обработки).
Maxim Dounin
Подробная информация о списке рассылки nginx-ru