ПРОЕКТЫ 


  АРХИВ 


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]

Re: баг в proxy_cache?



Hello!

On Sun, Jun 20, 2010 at 02:28:29PM +0400, umask wrote:

> Добрый день,
> 
> ситуация такая. Есть nginx (1) на раздающих фронтендах, есть 
> nginx (2) на бэкэндах, к которым подключен сторадж.
> 
> Произошла ситуация, при которой (1) тянул файл размером 2.7ГБ с 
> (2) и (1) стянул только часть файла (чуть больше 70-и процентов) 
> - видимо (1) сделали restart или просто прибили.
> 
> В итоге получился файл в кеше:

[...]

> Выше строка - Content-Length: 2787475007.
> 
> А вот что в файловой системе:
> 
> cdn3-ti:/cache/cache0 # ls -la ./6/d3/4cd20316dabd922c81ab41a0988ffd36
> -rw------- 1 nginx nginx 2149680753 Jun 16 23:44 
> ./6/d3/4cd20316dabd922c81ab41a0988ffd36

[...]

> Прибитие файла в кеше проблему решило, но осадок неприятный - 
> куча пользователей не могла бы ещё неделю скачать данный файл.
> 
> При это всём nginx ничего не писал в лог ни на каких уровнях 
> (error_log был выставлен в debug).

Да, nginx сейчас не сверяет Content-Length с размером полученного 
ответа при сохранении в кеш.  Если соединение было закрыто 
бекендом - ответ попадёт в кеш в том виде, в каком пришёл.

Править где-то тут:

$ grep -n 'TODO: check length' src/http/ngx_http_upstream.c
2593:                /* TODO: check length & update cache */

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.