Nginx: 충분한 공간에도 불구하고 '캐시 키 영역에 메모리가 없습니다'

Nginx: 충분한 공간에도 불구하고 '캐시 키 영역에 메모리가 없습니다'

nginx 로그에 다음 오류가 반복적으로 표시됩니다.

[crit] 30165#0: ngx_slab_alloc() failed: no memory in cache keys zone "api-data-cache"

캐시 키 영역에 사용된 디렉터리를 보면 해당 디렉터리가326MB표시:

du -s /usr/local/nginx/cache/
326652

그러나 내 nginx.conf max_size1GB이므로 공간이 충분해야 합니다.

proxy_cache_path        /usr/local/nginx/cache levels=1:2 keys_zone=api-data-cache:8m max_size=1g inactive=600m;
proxy_cache_key         "$scheme$host$request_uri/$device_type$cookie_w3tc_referrer";
proxy_cache_use_stale   updating timeout http_500 http_502 http_503 http_504;
proxy_ignore_headers    X-Accel-Expires Expires Cache-Control;

여기서 무슨 일이 일어날 수 있습니까? 사용 가능한 디스크 공간이 충분하며(50GB 이상)선적 서류 비치, 좀 당황스럽네요.

답변1

당신은공유 메모리 크기 늘리기keys_zone대신 에 max_size.

답변을 훔치는 중이 스레드

keys_zone=api-데이터-캐시:8mapi-data-cache최대 크기가 8MB인 공유 메모리 영역을 정의했습니다 . 캐시의 모든 활성 키와 메타데이터를 보유합니다. 따라서 nginx는 페이지가 캐시되었는지 확인할 때마다 먼저 공유 메모리 영역을 참조한 다음 캐시가 존재하는 경우 실제 캐시의 위치를 ​​찾습니다 /usr/local/cache/nginx.

에서공식 문서, 그것은 말한다1MB 영역은 약 8,000개의 키를 저장할 수 있습니다.. 따라서 응용 프로그램에 따라 필요에 따라 늘려야 합니다.

관련 정보