# HG changeset patch # User Maxim Dounin # Date 1540993779 -10800 # Node ID de50fa05fbebfbce974a4f5ba68515992efacd0e # Parent 874d47ac871a4b62fbe0ff5d469a8ad7bc5a4160 Cache: fixed minimum cache keys zone size limit. Size of a shared memory zones must be at least two pages - one page for slab allocator internal data, and another page for actual allocations. Using 8192 instead is wrong, as there are systems with page sizes other than 4096. Note well that two pages is usually too low as well. In particular, cache is likely to use two allocations of different sizes for global structures, and at least four pages will be needed to properly allocate cache nodes. Except in a few very special cases, with keys zone of just two pages nginx won't be able to start. Other uses of shared memory impose a limit of 8 pages, which provides some room for global allocations. This patch doesn't try to address this though. Inspired by ticket #1665. diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c --- a/src/http/ngx_http_file_cache.c +++ b/src/http/ngx_http_file_cache.c @@ -2427,7 +2427,7 @@ ngx_http_file_cache_set_slot(ngx_conf_t s.data = p; size = ngx_parse_size(&s); - if (size > 8191) { + if (size >= (ssize_t) (2 * ngx_pagesize)) { continue; } }