баг в proxy_cache?

umask umask на yandex.ru
Вс Июн 20 14:28:29 MSD 2010


Добрый день,

ситуация такая. Есть nginx (1) на раздающих фронтендах, есть nginx (2) на бэкэндах, к которым подключен сторадж.

Произошла ситуация, при которой (1) тянул файл размером 2.7ГБ с (2) и (1) стянул только часть файла (чуть больше 70-и процентов) - видимо (1) сделали restart или просто прибили.

В итоге получился файл в кеше:

cdn3-ti:/cache/cache0 # head ./6/d3/4cd20316dabd922c81ab41a0988ffd36
_"LH�LiL-�9qZJ7g��
KEY: GET|192.168.10.101|/files/somefolder/binary.exe|dummy_1
HTTP/1.1 200 OK
Server: nginx/0.8.32
Date: Wed, 16 Jun 2010 19:22:51 GMT
Content-Type: application/octet-stream
Content-Length: 2787475007
Last-Modified: Wed, 09 Jun 2010 12:38:32 GMT
Connection: close
Accept-Ranges: bytes

Выше строка - Content-Length: 2787475007.

А вот что в файловой системе:

cdn3-ti:/cache/cache0 # ls -la ./6/d3/4cd20316dabd922c81ab41a0988ffd36
-rw------- 1 nginx nginx 2149680753 Jun 16 23:44 ./6/d3/4cd20316dabd922c81ab41a0988ffd36

cdn3-ti:/cache/cache0 # stat ./6/d3/4cd20316dabd922c81ab41a0988ffd36
  File: `./6/d3/4cd20316dabd922c81ab41a0988ffd36'
  Size: 2149680753	Blocks: 4198600    IO Block: 4096   regular file
Device: fd01h/64769d	Inode: 556528      Links: 1
Access: (0600/-rw-------)  Uid: (  107/   nginx)   Gid: (  107/   nginx)
Access: 2010-06-16 23:22:54.151967524 +0400
Modify: 2010-06-16 23:44:32.387976976 +0400
Change: 2010-06-16 23:44:32.467969881 +0400

Оказалось, что файл размером 2149680753 байта.

Для пользователя это выглядит так: файл качается до 70-т какого-то процента нормально, а потом происходит обрыв и любые дальнейшие попытки скачать что-то безуспешны:

--2010-06-19 14:20:04--  http://192.168.10.101/files/somefolder/binary.exe
Connecting to 192.168.10.101:80... connected.
HTTP request sent, awaiting response... No data received.
Retrying.

--2010-06-19 14:20:10--  (try: 2)  http://192.168.10.101/files/somefolder/binary.exe
Connecting to 192.168.10.101:80... connected.
HTTP request sent, awaiting response... No data received.
Retrying.

..

--2010-06-19 14:24:04--  (try:20)  http://192.168.10.101/files/somefolder/binary.exe
Connecting to 192.168.10.101:80... connected.
HTTP request sent, awaiting response... No data received.
Giving up.

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

При это всём nginx ничего не писал в лог ни на каких уровнях (error_log был выставлен в debug).

Если важно - nginx/0.8.32, ОС - SLES 11 x86_64. Сборка nginx без debug.


--
Ilyas Khasyanov



Подробная информация о списке рассылки nginx-ru