Posted at

nginxでproxy_cache_pathに指定するkey_zoneのサイズはどのくらいにすれば良いのか

More than 5 years have passed since last update.

nginxでproxy_cache_pathにしているkey_zoneのサイズはどのくらいにすれば良いのか。

nginxでプロキシキャッシュを使う場合はnginx_cache_pathにパスや容量などを指定する事になる。

proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=CACHE:512m inactive=1d  max_size=60g;

このときkeys_zoneには共有メモリの名前と容量を指定するのだが、この容量は結局の所幾らにすればよいのか。引用すると次のようになるらしい。


Zone size should be set proportional to number of pages to cache. The size of the metadata for one page (file) depends on the OS; currently it is 64 bytes for FreeBSD/i386, and 128 bytes for FreeBSD/amd64.

-- HttpProxyModule


つまり64bitのFreeBSD環境の場合、キャッシュするオブジェクト1つにつき、128バイト消費される事になる。

なので、上の例のように60GBキャッシュするときは、1つのファイルが100KBであると仮定すると、

(60[GB]*1024*1024*1024) / (100*1024) * 128[B] /1024/1024 = 76.8 [MB]

となる。なので、76.8MB以上を指定しておけばいいということになる。