nginx-0.7.45

Igor Sysoev is at rambler-co.ru
Wed Apr 1 16:25:16 MSD 2009


On Tue, Mar 31, 2009 at 02:49:16PM +0400, Andrey Zonov wrote:

> Про 50 и 30 не понял.
> Кеш чистится до 0 - всегда, причём иногда cache manager после очистки
> начинает жрать 100% (после увеличения max_size это стало происходить
> реже, но всё же случается)
> 
> В качестве теста я запускаю:
> $ while :; do i=$(($i+1)); fetch -q "http://localhost:8080/blah?id=${i}"; done
> и смотрю df. Цикл длится минуты 3 после чего происходит очистка кеша.
> 
> Кстати, на заметку, если убрать из конфига:
> proxy_cache_valid       200 302 60m;
> воркер на каждый запрос падает по 11 сигналу.

Прилагаемый патч должен вылечить кэш-менеджер и падения.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/http/ngx_http_file_cache.c
===================================================================
--- src/http/ngx_http_file_cache.c	(revision 1945)
+++ src/http/ngx_http_file_cache.c	(working copy)
@@ -448,6 +448,7 @@
     fcn->valid_sec = 0;
     fcn->uniq = 0;
     fcn->body_start = 0;
+    fcn->length = 0;
 
 done:
 
@@ -1065,6 +1066,9 @@
 
         ngx_shmtx_unlock(&cache->shpool->mutex);
 
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
+                       "http file cache size: %O", size);
+
         if (size < cache->max_size) {
             return next;
         }
@@ -1290,6 +1294,10 @@
     ngx_uint_t               i;
     ngx_http_cache_valid_t  *valid;
 
+    if (cache_valid == NULL) {
+        return 0;
+    }
+
     valid = cache_valid->elts;
     for (i = 0; i < cache_valid->nelts; i++) {
 


More information about the nginx-ru mailing list