Re: slice module и proxy_cache_min_uses больше единицы.

Roman Arutyunyan arut на nginx.com
Чт Фев 25 18:28:37 UTC 2016


On Thu, Feb 25, 2016 at 06:44:03PM +0300, Vadim Lazovskiy wrote:
> 25 февраля 2016 г., 16:53 пользователь Roman Arutyunyan <arut на nginx.com>
> написал:
> >
> >
> > Маловат фрагмент.  Хотелось бы посмотреть на весь запрос и подзапросы.
> >
> >
> Сразу прошу прощения за размер логов.
> 
> http://disk.karelia.pro/833rexx/
> 
> Два лога:
> 1. с proxy_cache_min_uses 1. Работает, как задумывалось.
> Запрос на перемотку можно найти по диапазону 498197221-1279019570.
> 
> 2. с proxy_cache_min_uses 50. Ломается перемотка из-за игнорирования Range
> (или учета If-Range, кто его разберет).
> Запрос на пеермотку можно найти по диапазону 467829492-1279019570.

Попробуйте патч в аттаче.

> И чтоб 2 раза не вставать, спрошу, отчего может возникать проблема с
> переполнением диска?
> Диск 220G, max_cache опустил до 190G, а на деле диск забивается под
> завязку, причем именно кешем (proxy_cache_min_uses 1, slice 10m, 10-20 rps).
> В temp в этот момент не более 20 временных файлов размером ~ 10 мегабайт. В
> кеше все элементы <= 10 мегабайт.
> Незакрытых удаленных файлов на диске нет.
> В error log куча сообщений c No space left on device.

Может быть такое, что кеш растет так быстро, что nginx не успевает его очищать.

Еще одна причина - рестарт воркеров.  Если по какой-либо причине это происходит
(например, из-за нестабильных 3rd-party модулей), то кеш может остаться в
неконсистентном состоянии, что может приводить к описанной вами проблеме.

Насколько часто это у вас это происходит?

-- 
Roman Arutyunyan
----------- следущая часть -----------
# HG changeset patch
# User Roman Arutyunyan <arut на nginx.com>
# Date 1456424237 -10800
#      Thu Feb 25 21:17:17 2016 +0300
# Node ID 93266a5c3377443acc1091fd8b2f3553e19bfa09
# Parent  6812ca9a800247d2428f487d9b4938a2b499b7d8
[mq]: upstream-lmt

diff -r 6812ca9a8002 -r 93266a5c3377 src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c	Tue Feb 16 17:49:14 2016 +0300
+++ b/src/http/ngx_http_upstream.c	Thu Feb 25 21:17:17 2016 +0300
@@ -4146,15 +4146,8 @@ ngx_http_upstream_process_last_modified(
     u = r->upstream;
 
     u->headers_in.last_modified = h;
-
-#if (NGX_HTTP_CACHE)
-
-    if (u->cacheable) {
-        u->headers_in.last_modified_time = ngx_parse_http_time(h->value.data,
-                                                               h->value.len);
-    }
-
-#endif
+    u->headers_in.last_modified_time = ngx_parse_http_time(h->value.data,
+                                                           h->value.len);
 
     return NGX_OK;
 }
@@ -4651,15 +4644,8 @@ ngx_http_upstream_copy_last_modified(ngx
     *ho = *h;
 
     r->headers_out.last_modified = ho;
-
-#if (NGX_HTTP_CACHE)
-
-    if (r->upstream->cacheable) {
-        r->headers_out.last_modified_time =
+    r->headers_out.last_modified_time =
                                     r->upstream->headers_in.last_modified_time;
-    }
-
-#endif
 
     return NGX_OK;
 }


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