diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2011-04-08 15:27:53 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2011-04-08 15:27:53 +0000 |
| commit | 711eeb851438331e87068ea3139df9b415f9ca6a (patch) | |
| tree | 58e4c0a20e7c06ebe396290fec36db43a0a593b1 | |
| parent | ea38fe54bde053c4d60e9be7b1fcb08ea95e7e95 (diff) | |
| download | nginx-711eeb851438331e87068ea3139df9b415f9ca6a.tar.gz nginx-711eeb851438331e87068ea3139df9b415f9ca6a.tar.bz2 | |
fix CPU hog in cache manager
patch by Maxim Dounin
| -rw-r--r-- | src/http/ngx_http_file_cache.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c index 0d97e94ec..f26fcbc98 100644 --- a/src/http/ngx_http_file_cache.c +++ b/src/http/ngx_http_file_cache.c @@ -1027,6 +1027,7 @@ ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache) if (fcn->count == 0) { ngx_http_file_cache_delete(cache, q, name); + wait = 0; } else { if (--tries) { @@ -1191,7 +1192,7 @@ ngx_http_file_cache_manager(void *data) ngx_http_file_cache_t *cache = data; off_t size; - time_t next; + time_t next, wait; next = ngx_http_file_cache_expire(cache); @@ -1212,7 +1213,11 @@ ngx_http_file_cache_manager(void *data) return next; } - next = ngx_http_file_cache_forced_expire(cache); + wait = ngx_http_file_cache_forced_expire(cache); + + if (wait > 0) { + return wait; + } if (ngx_http_file_cache_manager_sleep(cache) != NGX_OK) { return next; |
