Welcome! Log In Create A New Profile

Advanced

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin
September 12, 2011 05:54PM
Hello!

On Mon, Sep 12, 2011 at 08:06:36PM +0300, Андрей Василишин wrote:

>
> >А можно ещё для чистоты эксперимента патч откатить, и убедиться
> >что без патча проблема воспроизводится?
> >
> >Потому как я решительно не вижу причин, по которым данный патч мог
> >бы помочь.
> >
>
> В общем опять проблема воспроизвелась, при перемотке прыгает на
> начало (нгинкс тут без патча).

Судя по debug log'у, файл 110912-v.flv писали в процессе его
скачивания клиентами, в результате закешированная длина в
open_file_cache в разных рабочих процессах разная. Соответственно
если запрос со start=<много> попадал в рабочий процесс, считавший,
что длина файла меньше, в ответ отдавался полный файл.

В общем случае совет простой: не пишите файлы неатомарно, а если
пишите - будте готовы к сюрпризам.

В данном случае, судя по всему, ситуация усугублялась проблемой в
open_file_cache: после дописывания файла закешированный размер не
обновлялся. Прилагающийся патч проблему исправляет.

Maxim Dounin
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1315864171 -14400
# Node ID 0786be1906af99a4ba20edeb8b24348ba6a88bef
# Parent 83b74d7020ba5d02b51f9e2e162bca943d47c486
Bugfix: open_file_cache did not update file info on retest.

If file inode was not changed, cached file information was not updated
on retest. As a result stale information might be cached forever if file
attributes was changed and/or file was extended.

diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c
--- a/src/core/ngx_open_file_cache.c
+++ b/src/core/ngx_open_file_cache.c
@@ -284,13 +284,11 @@ ngx_open_cached_file(ngx_open_file_cache

if (of->uniq == file->uniq) {

- file->count++;
-
if (file->event) {
file->use_event = 1;
}

- goto renew;
+ goto update;
}

/* file was changed */
@@ -394,8 +392,6 @@ update:
}
}

-renew:
-
file->created = now;

found:
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

auth_basic ошибка 500

Андрей Василишин September 04, 2011 12:48PM

Re: auth_basic ошибка 500

Maxim Dounin September 04, 2011 01:14PM

Re: auth_basic ошибка 500

Андрей Василишин September 04, 2011 01:42PM

[BUG] sendfile on; & output_buffers 1 128k;

Андрей Василишин September 05, 2011 11:20AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Igor Sysoev September 05, 2011 11:48AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Андрей Василишин September 08, 2011 08:46AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 08, 2011 09:22AM

Re: [BUG] sendfile on; & output_buffers 1 128k; Attachments

Андрей Василишин September 09, 2011 04:00AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 09, 2011 05:02AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Андрей Василишин September 09, 2011 05:18AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Igor Sysoev September 09, 2011 05:56AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 09, 2011 06:18AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 09, 2011 06:58AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Андрей Василишин September 09, 2011 09:28AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Igor Sysoev September 09, 2011 09:30AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Igor Sysoev September 09, 2011 05:58AM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 12, 2011 05:54PM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Maxim Dounin September 05, 2011 01:02PM

Re: [BUG] sendfile on; & output_buffers 1 128k;

Андрей Василишин September 05, 2011 01:38PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 301
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready