Странности DELETE и open_file_cache
Igor Sysoev
is at rambler-co.ru
Thu Nov 20 17:51:06 MSK 2008
On Thu, Nov 20, 2008 at 05:35:32PM +0300, Монашёв Михаил wrote:
> Получен лог:
> 20/Nov/2008:17:15:28 +0300 89.208.146.215 348 i15.carguru.ru "DELETE /i/users/test.1227190526.css HTTP/1.1" 404 "-" "libwww-perl/5.805"
> 20/Nov/2008:17:15:58 +0300 89.208.146.215 211 i15.carguru.ru "PUT /i/users/test.1227190526.css HTTP/1.1" 201 "-" "libwww-perl/5.805"
> 20/Nov/2008:17:16:21 +0300 89.208.146.215 1064 i15.carguru.ru "GET /i/users/test.1227190526.css HTTP/1.1" 200 "-" "libwww-perl/5.805"
> 20/Nov/2008:17:16:33 +0300 89.208.146.215 203 i15.carguru.ru "DELETE /i/users/test.1227190526.css HTTP/1.1" 204 "-" "libwww-perl/5.805"
> 20/Nov/2008:17:17:14 +0300 89.208.146.215 1064 i15.carguru.ru "GET /i/users/test.1227190526.css HTTP/1.1" 200 "-" "libwww-perl/5.805"
>
> Как видно из лога второй DELETE почему-то не удаляет файл и GET потом
> этот файл успешно его возвращает. И содержимое файла точно такое же,
> какое записал PUT. Хотя на диске файла не оказывается после второго
> DELETE-а.
>
> Оказалось, что виной такому поведению open_file_cache .
>
> Конфиг был вот такой:
>
> open_file_cache off;
> open_file_cache max=20000 inactive=120s;
> open_file_cache_valid 120s;
> open_file_cache_errors off;
>
> Не знаю, бага, это или фича. Но у меня она отняла пол дня. :-)
Фича. Файл удаляется, но в open_file_cache он остаются на время
open_file_cache_valid. Удаление из open_file_cache по DELETE
не решает проблемы, потому что кэши локальны для каждого воркера.
Проблему бы решило сообщение об удалении по kqueue/etc, но в nginx'е
на данный момент есть проблемы из-за которых воркер может упасть
при включении таких сообщений.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list