nginx、proxy_cache_path【Cannot allocate memory】のエラー

この記事は約3分で読めます。

nginx、Cannot allocate memoryのエラー

nginx 再起動時に

[alert] mmap(MAP_ANON|MAP_SHARED, 209715200) failed (12: Cannot allocate memory)
[alert] munmap(FFFFFFFFFFFFFFFF, 209715200) failed (22: Invalid argument)

というエラーが出ることがありました。そして、nginxが起動されませんでした。

「nginxで、メモリを割り当てようとしたら、エラーとなった」
というものです。

nginx proxy_cache_path 設定

nginxの設定において、

proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=xxx:200m inactive=1m max_size=5000m;

と設定していました。
「keys_zone=xxx:200m」ですが、「200メガの共有メモリを設定」としていましたが・・・適当でした(汗)。
実メモリが、潤沢にあるわけではないので、エラーとなったようです。

エラー時の数字「209715200」は、
209715200 / (1024 x 1024) -> 200となり、設定通りでした(汗)

そこで

proxy_cache_path /var/cache/nginx/cache1 levels=1:2 keys_zone=xxx:1m inactive=1d max_size=1g;

と、設定しなおしました。

nginx proxy_cache_path 設定 各種設定

proxy_cache_path,keys_zone

共有メモリ上に最大、どのくらい許可するかの設定。

In addition, all active keys and information about data are stored in a shared memory zone, whose name and size are configured by the keys_zone parameter. One megabyte zone can store about 8 thousand keys.
↑1メガ(1m)で、約8000個のキーを格納できるようで、1メガと設定。

引用元:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

proxy_cache_path,inactive

inactiveで、指定された、時間が経過すると、古いファイルから、削除されます。
デフォルトでは、10分(10m)。今回、「1d」(1日)に設定してみました。

proxy_cache_path,max_size

キャッシュのファイル最大容量。
ディスク容量と相談して、決めるのがいいかと思います。
上記では、「1ギガ」(1g)としました。

キャッシュの設定

nginx、キャッシュの設定は、サイトのアクセス数、サーバーのメモリ、ディスクの容量などから、最適値を探していくのがいいかと思います。

 

 

タイトルとURLをコピーしました