apacheで動かしたrailsアプリが遅いので、対策をしてみた
apacheで動くようになったのは良いけど、特に最初の接続が数秒単位で遅いので調べてみた。
Passengerの設定変更
参考URL: https://blog.hello-world.jp.net/ruby/1668/
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#どちらか好きな方の設定ファイルに書く(apache全体に影響する書き方しか無い) vi /etc/httpd/conf/httpd.conf vi /etc/httpd/conf.d/passenger.conf # PassengerがRailsサーバを落とす時間。デフォルトだと2分と短すぎるので RailsPoolIdleTime 3600 # 秒数の横にコメントを書くと、引数はひとつだけ!と怒られるので注意!! # RailsPoolIdleTime 3600 #1時間 # RailsPoolIdleTime takes one argument, Deprecated option. # 再起動すれば反映されるはず service httpd graceful |
このままだと、1時間アクセスが無いとアイドル状態になってしまうので、1時間毎にcronでアクセスする。
1 2 |
# apacheのrailsアプリを動作させるモジュール(Passenger)が標準だと2分で落ちるので、RailsPoolIdleTimeを1時間にして、毎時アクセスする 0 * * * * curl https://example.com |
最初の接続が遅い理由はコレらしい。速くなったかな?