Проблемы при порче дискового кеша

Dmitriy Timokhin avanie at gmail.com
Tue Oct 13 15:19:29 MSD 2009


Здравствуйте!

Столкнулся с таким поведением: если кто-то недобрый попортит лежащий в
proxy_cache файл, отрезав у него конец, то при отдаче ответа из этого
файла nginx отдаёт столько, сколько в этом файле есть, а потом
подвешивает соединение: не обрывает, не закрывает, но и ничего в него
не пишет.

Проблема воспроизводится на nginx-0.7.62 (на котором она и была
обнаружена) и на 0.8.19. Конфиг (тривиальный) и дебаг-лог от 0.8.19
прилагаю. Система -- Debian Lenny, ядро 2.6.26, amd64.

Комментарии к дебаг-логу: до его начала запрос /crossdomain.xml лёг в
proxy_cache, потом от лежащего в proxy_cache файлика вручную отгрызли
последние несколько десятков байт. Лог начинается там, где я повторяю
запрос wget'ом. После строчки 2009/10/13 14:54:52 [debug] 8060#0:
epoll timer: 64997 wget уходит в цикл select-таймаут-select-таймаут... В
14:54:59 я прибиваю wget.

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

Заранее спасибо.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debug_log
Type: application/octet-stream
Size: 11085 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091013/e0fa3831/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx.conf
Type: application/octet-stream
Size: 635 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091013/e0fa3831/attachment-0001.obj>


More information about the nginx-ru mailing list