Railsでx_sendfileを使う
Railsでsend_fileというメソッドがある
これは、ファイルなどをそのまま返す場合に使ったりするが
これを使うとRailsのメモリ使用量が増加していく。
2.1でこの現象が出るが 2.3とかもかも?
なんかメモリを解放してないっぽい感じですが、これに関しては、ほかの方が調べてたりするので深く調べないことにする。
で、解決方法は、x_sendfileを使うのがスマートな気がするので、これを採用する。
導入手順
- apacheにmod_xsendfileを組み込む
https://tn123.org/mod_xsendfile/ wget https://tn123.org/mod_xsendfile/mod_xsendfile.c sudo apxs2 -cia mod_xsendfile.c sudo a2enmod xsenfile
- apacheの設定ファイルを変更
とりあえず、設定ファイルにxsendfile用のディレクティブを追加XSendFile on XSendFilePath /home/test/products/files
- Railsのソースでsend_fileしているところにオプションを指定
とりあえずテスト用にpaの処理に変更を加えるsend_file path.to_s, :type=>'image/gif', :disposition => 'inline', :x_sendfile => true
という感じで。
- apache再起動
sudo apache2ctl restart