Mercurial > hg > nginx-quic
comparison src/http/ngx_http_file_cache.c @ 6742:3fbb3bdff824
Cache: cache manager debugging.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 13 Oct 2016 15:50:36 +0300 |
parents | ca709bca4b77 |
children | 1a917932db96 |
comparison
equal
deleted
inserted
replaced
6741:79ac653ae2d0 | 6742:3fbb3bdff824 |
---|---|
1918 ngx_http_file_cache_manager(void *data) | 1918 ngx_http_file_cache_manager(void *data) |
1919 { | 1919 { |
1920 ngx_http_file_cache_t *cache = data; | 1920 ngx_http_file_cache_t *cache = data; |
1921 | 1921 |
1922 off_t size; | 1922 off_t size; |
1923 time_t next, wait; | 1923 time_t wait; |
1924 ngx_msec_t elapsed; | 1924 ngx_msec_t elapsed, next; |
1925 ngx_uint_t count, watermark; | 1925 ngx_uint_t count, watermark; |
1926 | 1926 |
1927 cache->last = ngx_current_msec; | 1927 cache->last = ngx_current_msec; |
1928 cache->files = 0; | 1928 cache->files = 0; |
1929 | 1929 |
1930 next = ngx_http_file_cache_expire(cache); | 1930 next = (ngx_msec_t) ngx_http_file_cache_expire(cache) * 1000; |
1931 | 1931 |
1932 if (next == 0) { | 1932 if (next == 0) { |
1933 return cache->manager_sleep; | 1933 next = cache->manager_sleep; |
1934 goto done; | |
1934 } | 1935 } |
1935 | 1936 |
1936 for ( ;; ) { | 1937 for ( ;; ) { |
1937 ngx_shmtx_lock(&cache->shpool->mutex); | 1938 ngx_shmtx_lock(&cache->shpool->mutex); |
1938 | 1939 |
1945 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0, | 1946 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0, |
1946 "http file cache size: %O c:%ui w:%i", | 1947 "http file cache size: %O c:%ui w:%i", |
1947 size, count, (ngx_int_t) watermark); | 1948 size, count, (ngx_int_t) watermark); |
1948 | 1949 |
1949 if (size < cache->max_size && count < watermark) { | 1950 if (size < cache->max_size && count < watermark) { |
1950 return (ngx_msec_t) next * 1000; | 1951 break; |
1951 } | 1952 } |
1952 | 1953 |
1953 wait = ngx_http_file_cache_forced_expire(cache); | 1954 wait = ngx_http_file_cache_forced_expire(cache); |
1954 | 1955 |
1955 if (wait > 0) { | 1956 if (wait > 0) { |
1956 return (ngx_msec_t) wait * 1000; | 1957 next = (ngx_msec_t) wait * 1000; |
1958 break; | |
1957 } | 1959 } |
1958 | 1960 |
1959 if (ngx_quit || ngx_terminate) { | 1961 if (ngx_quit || ngx_terminate) { |
1960 return (ngx_msec_t) next * 1000; | 1962 break; |
1961 } | 1963 } |
1962 | 1964 |
1963 if (++cache->files >= cache->manager_files) { | 1965 if (++cache->files >= cache->manager_files) { |
1964 return cache->manager_sleep; | 1966 next = cache->manager_sleep; |
1967 break; | |
1965 } | 1968 } |
1966 | 1969 |
1967 ngx_time_update(); | 1970 ngx_time_update(); |
1968 | 1971 |
1969 elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last)); | 1972 elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last)); |
1970 | 1973 |
1971 if (elapsed >= cache->manager_threshold) { | 1974 if (elapsed >= cache->manager_threshold) { |
1972 return cache->manager_sleep; | 1975 next = cache->manager_sleep; |
1973 } | 1976 break; |
1974 } | 1977 } |
1978 } | |
1979 | |
1980 done: | |
1981 | |
1982 elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last)); | |
1983 | |
1984 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0, | |
1985 "http file cache manager: %ui e:%M n:%M", | |
1986 cache->files, elapsed, next); | |
1987 | |
1988 return next; | |
1975 } | 1989 } |
1976 | 1990 |
1977 | 1991 |
1978 static void | 1992 static void |
1979 ngx_http_file_cache_loader(void *data) | 1993 ngx_http_file_cache_loader(void *data) |