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)