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以上を指定しておけばいいということになる。