Weblickのレスポンスが遅いので・・・
Rails4.2を導入後、アプリケーションの開発環境(development)で起動しているWeblickのレスポンスが遅いことが多くなりました。
Rails4.0の頃は特別快適というわけではないですが、あまりストレスを感じることもなかったかと思います。
サーバを立ち上げた直後くらいはあまりストレスを感じないのですが徐々に遅くなってきています。1つのアクションに対するレスポンスも十秒以上かかることも。
同じように困っている方がいらっしゃるようで、ネットで調べてみるとconfig.rb
の設定を変えると良いという記事が多いようでした。
# Before
:DoNotReverseLookup => nil,
# After
:DoNotReverseLookup => true,
しかし、設定を変えてみたものの、体感的にはほとんど変わりませんでした。
更に対策方法を探っていると、Weblickではなくthinというサーバの利用を勧めている方がいました。
先入観があったのかthinは開発環境で使う印象がなかったため、いままでほとんど試していませんでした。また実運用環境の場合は Unicorn + nginx としていましたので。
thinのWebサイトをみると、導入もGemfileに追加するだけで利用できるようになるとのこと。
そこで、早速試してみました。
# Gemfile
group :development, :test do
:
gem 'thin' # 追加
end
Gemfile更新後はbundle update
を実行しましょう。
サーバの起動も簡単です。
$ bundle exec thin start
Weblickの場合bundle exec rails server
で起動後、Webアプリケーションにアクセスするとログ(development.log)と同じ内容がコンソールに表示されるのですが、thinの場合ログがコンソールに表示されません。
オプションの中にもそれらしきものが見当たらす・・・
でも、ログを表示したいのであれば以下のようにtailコマンドでログを表示するようにしておけば問題ありませんし。
$ tail -f log/development.log
速度が改善されたのは良いのですが開発環境で利用する場合、修正したソースが自動的にロードされるのか、byebugが使えるかなどが気になります。
実際に試したところコード修正後もサーバの再起動は不要ですし、byebugも利用できました。開発環境の使い勝手も従来のWeblickとほとんど変わらないようです。
まだ使い始めたところではありますが、だいぶ快適になりました。 Thanks! thin!
__2015-09-14__追記
Thinはgemでインストールするだけで良いようです。 いつものようにbundle exec rails s --bind=0.0.0.0
でWeblickからThinに変わりました。
それでも、やはり遅くなるようなので特にdevelopment環境では不要なSoffeeScript(JavaScript)ファイル、Scssファイルなども減らした方がいいと思います。HTMLソースをみると対象のJSやCSSのソース読み込みを全て行っていることが確認できると思います。
<script src="assets/******.js">
<script src="assets/******.js">
<script src="assets/******.js">
: