ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx-0.7.45



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
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++) {
 


 




Copyright © Lexa Software, 1996-2009.