エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

Nginxのリバースプロキシのキャッシュ置き場をRAMディスクにする

前回の記事でDisk I/OがボトルネックになっていてLoad Averageが上がっていたため、I/Oを減らす対策を行う、というのが今回のネタ。

Nginxでリバースプロキシのキャッシュをオンメモリで持つやり方を調べてたらあまりいい情報が無かったので、 キャッシュディレクトリをRAMディスクにすることで対応しました。

Nginxの設定

$ sudo vi /etc/nginx/nginx.conf
    ...
    proxy_cache_path         /var/cache/nginx levels=1:2 keys_zone=one:4m max_size=1000m inactive=120m;
    ...

proxy_cache_pathのmax_sizeはRAMディスクの容量に合わせておきます。今回はRAMディスクを1GB(1024MB)で作る想定で、1000mにしました。

(差の24MB分はカツカツで使って何かトラブルがおきたら嫌だなと思ったので保険)

RAMディスクを作る

Linux上のRAMディスクはtmpfsramfsがあるようですが、 tmpfsの方がディスクがいっぱいになったりOSがメモリ不足になった時に融通を利かす(らしい)ので、 今回はtmpfsの方を使います。

$ sudo vi /etc/fstab
tmpfs           /var/cache/nginx tmpfs  size=1024m,mode=700,uid=www-data,gid=root 0        0

fstabにRAMディスクの仕様を書きます。

sizeは1024MB、権限まわりは元の/var/cache/nginxに合わせておきました。

NginxのキャッシュディレクトリをRAMディスクに置き換える

$ sudo /etc/init.d/nginx stop
$ sudo rm -rf /var/cache/nginx/*

一旦Nginxを止めて、キャッシュを全削除します。

$ sudo mount /var/cache/nginx
$ sudo /etc/init.d/nginx start

そして、RAMディスクをマウントして、Nginxを起動。

これで完了。お手軽。