Redmineを運用するためのイロハを身につけよう

第6回 よりよいパフォーマンスを求めて ~WEBrickからlighttpdへ~

この記事を読むのに必要な時間:およそ 3 分

lighttpdを使ってRedmineを動かす

既に本連載第1回で紹介した環境構築は終わっているものとして話を進めたいと思います。
まずは,必要となるパッケージをaptを使ってインストールします。

# apt-get install lighttpd libfcgi-ruby1.8

次に,lighttpdの設定ファイルである"lighttpd.conf"をRedmineに標準で付属しているRailsに含まれているサンプルからconfigディレクトリにコピーします。

# cp ${RAILS_ROOT}/vendor/rails/railties/configs/lighttpd.conf ${RAILS_ROOT}/config/

コピーしたlighttpd.confを編集します。34行目の動作モードを指定する環境変数である"RAILS_ENV"の項を以下のように書き換えます。

変更前

"bin-environment" => ( "RAILS_ENV" => "development" ) 

変更後

"bin-environment" => ( "RAILS_ENV" => "production" ) 

次に,publicディレクトリ内の"dispatch.fcgi.example"をリネームして"dispatch.fcgi"とし,実行権を付与します。

# mv ${RAILS_ROOT}/public/dispatch.fcgi.example ${RAILS_ROOT}/public/dispatch.fcgi

# chmod +x ${RAILS_ROOT}/public/dispatch.fcgi

以上で,最低限のインストール作業は完了です。

${RAILS_ROOT}にて以下コマンドを実行することで,lighttpdでRedmineを稼動させることが可能です。

# ruby script/server

なお,以前のようにWEBrickを利用したい場合は,以下のように明示させて起動してください。

# ruby script/server webrick -e production

ベンチマーク

Apacheに標準で付属している「ab」⁠Apache Bench)を使って,簡単なパフォーマンスの測定をしてみます。

環境・条件

測定を行った環境は以下の通りで,WEBrickとlighttpd,そして参考程度にmongrelとも比較しました。

  • Ubuntu Linux 7.10 on Xen ⁠Full Virtualization)
  • 2Core vCPU, 1GB Memory
  • Ruby(1.8.6), Rails(2.0.2), Redmine(0.7.1), productionモード

測定対象となるWeb/APサーバは,以下の3つです。各サーバはデフォルト設定のまま稼動させました。

  • WEBrick(1.3.1)
  • mongrel(1.1.4)
  • lighttpd(1.4.18)

上記3つのサーバに対して,以下のabコマンドをRedmineのトップページに10回実行し,"Requests per second"の平均値を出した結果が以下となります。

# ab -n 100 -c 10 http://${SERVER_NAME}:3000/

結果

WEBrick24.46 ⁠reqs/sec)
mongrel31.83 ⁠reqs/sec)
lighttpd35.60 ⁠reqs/sec)

以上の結果となりました。参考値ではありますが,lighttpdがWEBrickの約1.5倍程度の性能が出ていることがわかります。
稼働環境やアプリケーション処理などによって全て上記のような結果になるわけではありませんが,複数のユーザから利用され,本格的に運用されており,かつWEBrickを利用されている場合は,すぐにでもlighttpdを利用されることをオススメします。

おわりに

以上,駆け足ではありましたが,Redmineの本格的なシステム運用を始める第一歩として,軽量Webサーバであるlighttpdの導入方法を紹介しました。
実際には,lighttpdの起動/停止のスクリプトやlighttpdの設定など,使い方によってはもう少しやることがあるかと思いますが,Web上でも情報があると思いますし,筆者のブログなどでもまた機会があればご紹介します。

今回紹介したWeb/APサーバの他にも,最近ではmongrelより高速とうたわれているThinや,Passenger※2などの新しい選択肢も登場してきているため,興味のある方は継続的にウォッチしていくべきでしょう。

次回は,Javaで実装されたRuby言語であるJRubyを利用して,RedmineをJava製のアプリケーションサーバで運用するための方法を紹介します。

※2)
Apacheにmod_railsと呼ばれるモジュールを組み込み,FastCGIよりセットアップが簡単で,かつ高速で動かすことができます。導入方法については,筆者のブログにて紹介しています。

著者プロフィール

安達輝雄(あだちてるお)

TIS株式会社勤務。入社してすぐにRuby on Railsと出会う。現在はJRubyやXenなどOSSを中心に調査・検証をおこなっている。

ブログ:http://d.hatena.ne.jp/interu/


並河祐貴(なみかわゆうき)

TIS株式会社 基盤技術センター所属。オブジェクト指向開発,開発環境・ツール整備に従事した後,近年はRuby on Railsを中心としたオープンソース系ミドルウェアの検証/導入や,Xenなどのサーバ仮想化技術をターゲットに取り組んでいる。

ブログ:http://d.hatena.ne.jp/rx7/