Ruby Enterprise Editionインストールで性能改善

結論から言いますと、49.3% もメモリ使用率を削減できました!!
以下、技術的な情報になりますので興味がある方だけ読んでください。

VPS環境にRuby Enterprise Edition(version 1.8.7-2009.10)をインストールしました。
VPS上では複数のRailsアプリケーションを動作させています。
最大メモリは十分にある環境なのですが、必要時に割り当てられるメモリなので、一瞬でも枯渇する機会を少なくするために導入しました。

まずは下記サイトよりダウンロード。
http://www.rubyenterpriseedition.com/

# wget http://rubyforge.org/frs/download.php/66162/ruby-enterprise-1.8.7-2009.10.tar.gz

次に展開してインストールです。

# tar zxvf ruby-enterprise-1.8.7-2009.10.tar.gz
# cd ruby-enterprise-1.8.7-2009.10
# ./installer
./platform_info.rb:224: warning: Insecure world writable dir /home/kembo in PATH, mode 040777
Welcome to the Ruby Enterprise Edition installer
This installer will help you install Ruby Enterprise Edition 1.8.7-2009.10.
Don't worry, none of your system files will be touched if you don't want them
to, so there is no risk that things will screw up.

You can expect this from the installation process:

  1. Ruby Enterprise Edition will be compiled and optimized for speed for this
     system.
  2. Ruby on Rails will be installed for Ruby Enterprise Edition.
  3. You will learn how to tell Phusion Passenger to use Ruby Enterprise
     Edition instead of regular Ruby.

Press Enter to continue, or Ctrl-C to abort.

Checking for required software...

 * C compiler... found at /usr/bin/gcc
 * C++ compiler... found at /usr/bin/g++
 * The 'make' tool... found at /usr/bin/make
 * Zlib development headers... found
 * OpenSSL development headers... found
 * GNU Readline development headers... found
                                                                                      • -
Target directory Where would you like to install Ruby Enterprise Edition to? (All Ruby Enterprise Edition files will be put inside that directory.) [/opt/ruby-enterprise-1.8.7-2009.10] :
                                                                                      • -
Compiling and optimizing the memory allocator for Ruby Enterprise Edition In the mean time, feel free to grab a cup of coffee. ./configure --prefix=/opt/ruby-enterprise-1.8.7-2009.10 --disable-dependency-tracking checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes 省略

Cコンパイラなどのインストールチェック後、インストール先ディレクトリを入力(上記例ではデフォルトのまま)。
インストールが開始されます。
途中次の画面で止まります。

                                                                                      • -
Warning: some libraries could not be installed The following gems could not be installed, probably because of an Internet connection error: * sqlite3-ruby * pg These gems are not required, i.e. Ruby Enterprise Edition will work fine without them. But most people use Ruby Enterprise Edition in combination with Phusion Passenger and Ruby on Rails, which do require one or more of the aforementioned gems, so you may want to install them later. To install the aforementioned gems, please use the following commands: * /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby /opt/ruby-enterprise-1.8.7-2009.10/bin/gem install sqlite3-ruby * /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby /opt/ruby-enterprise-1.8.7-2009.10/bin/gem install pg Press ENTER to show the next screen.

SQL LightやPostgre SQLを使う場合は指示に従ってインストールしましょう的なメッセージです。
インストールコマンドまで表示されて丁寧ですね。
passengerのインストールも同様ですが、とてもユーザビリティの高いインストーラで関心します。

インストールが成功すると下記画面が表示されます。

                                                                                      • -
Ruby Enterprise Edition is successfully installed! If want to use Phusion Passenger (http://www.modrails.com) in combination with Ruby Enterprise Edition, then you must reinstall Phusion Passenger against Ruby Enterprise Edition, as follows: /opt/ruby-enterprise-1.8.7-2009.10/bin/passenger-install-apache2-module Make sure you don't forget to paste the Apache configuration directives that the installer gives you. If you ever want to uninstall Ruby Enterprise Edition, simply remove this directory: /opt/ruby-enterprise-1.8.7-2009.10 If you have any questions, feel free to visit our website: http://www.rubyenterpriseedition.com Enjoy Ruby Enterprise Edition, a product of Phusion (www.phusion.nl) :-)

既存のRubyには一切影響を与えないという点と、アンインストール方法(ディレクトリを削除するだけ)が表示されています。

次はpassengerのインストールです。
この作業はインストールしたEnterprise Rubyを使用して行います。

/opt/ruby-enterprise-1.8.7-2009.10/bin/passenger- install-apache2-module

インストール自体は通常のpassengerと同じです。
私の環境の場合はここでエラーとなりました。

省略
virtual memory exhausted: Cannot allocate memory
rake aborted!
Command failed with status (1): [g++ -Iext -Iext/common -fPIC -DLINUX=2 -D_...]
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/Rakefile:172:in `define_common_library_task'
(See full trace by running task with --trace)

                                                                                      • -
省略

virtual memory exhausted: Cannot allocate memory と怒られています。
topコマンド+Shift M(Memory使用量でソート)でメモリの使用状況を確認するとapacheが700MBほど使っていました。
夜間だったこともあり、一時的にapacheを停止して再度チャレンジ。

                                                                                      • -
The Apache 2 module was successfully installed. Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/apache2/mod_passenger.so PassengerRoot /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8 PassengerRuby /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby After you restart Apache, you are ready to deploy any number of Ruby on Rails applications on Apache, without any further Ruby on Rails-specific configuration! Press ENTER to continue.
                                                                                      • -
Deploying a Ruby on Rails application: an example Suppose you have a Rails application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public: ServerName www.yourhost.com DocumentRoot /somewhere/public # <-- be sure to point to 'public'! AllowOverride all # <-- relax Apache security settings Options -MultiViews # <-- MultiViews must be turned off And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/doc/Users guide Apache.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/ Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

やりました。成功です。

次は既存のRuby環境をEnterprise Ruby上にインストールします。
Enterprise RubyとEnterprise Rubyのgemを使います。

# /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby /opt/rruby-enterprise-1.8.7-2009.10/bin/gem install rails -v=2.3.2 --no-ri --no-rdoc
Successfully installed activesupport-2.2.2
Successfully installed activerecord-2.2.2
Successfully installed actionpack-2.2.2
Successfully installed actionmailer-2.2.2
Successfully installed activeresource-2.2.2
Successfully installed rails-2.2.2
6 gems installed

全てのgemをインストールする必要があります。
次にapacheの設定です。
次の3行を旧passengerの設定と置き換えます。

#   LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/apache2/mod_passenger.so
#   PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8
#   PassengerRuby /usr/local/bin/ruby

   LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/apache2/mod_passenger.so
   PassengerRoot /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8
   PassengerRuby /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby

ここまででインストール完了です。

いよいよ性能測定です。
apacheの設定ファイルを再読み込みする前に性能を取得しておきましょう。
性能データの取得にはpassengerのpassenger-memory-statsコマンドを使います。
ちなみに通常のruby版もEnterpirse ruby版もコマンドに違いは無いようです。
私は同じ負荷をかけながら性能データを取得しました。


通常のRuby

3330  16.6 MB   0.4 MB   /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/apache2/ApplicationPoolServerExecutable 0 /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/bin/passenger-spawn-server  /usr/local/bin/ruby  /tmp/passenger.31799
3331  44.5 MB   12.6 MB  Passenger spawn server
3368  186.2 MB  22.2 MB  Passenger ApplicationSpawner: /var/www/location/html/current
3397  186.3 MB  22.3 MB  Rails: /var/www/location/html/current
3400  186.2 MB  22.8 MB  Rails: /var/www/location/html/current
3404  187.5 MB  74.7 MB  Passenger ApplicationSpawner: /var/www/lovechic/html/current
3431  199.8 MB  86.6 MB  Rails: /var/www/lovechic/html/current
3433  199.8 MB  86.6 MB  Rails: /var/www/lovechic/html/current
3534  189.8 MB  74.9 MB  Rails: /var/www/lovechic/html/current
3554  189.8 MB  74.9 MB  Rails: /var/www/lovechic/html/current
### Processes: 10
### Total private dirty RSS: 477.94 MB


Enterprise Ruby

3832  16.6 MB   0.4 MB   /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/apache2/ApplicationPoolServerExecutable 0 /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8/bin/passenger-spawn-server  /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby  /tmp/passenger.31799
3833  107.7 MB  15.5 MB  Passenger spawn server
3889  215.9 MB  26.4 MB  Passenger ApplicationSpawner: /var/www/location/html/current
3899  217.9 MB  27.9 MB  Rails: /var/www/location/html/current
3902  217.9 MB  27.8 MB  Rails: /var/www/location/html/current
3912  196.5 MB  22.9 MB  Passenger ApplicationSpawner: /var/www/lovechic/html/current
3934  207.7 MB  52.2 MB  Rails: /var/www/lovechic/html/current
5133  198.5 MB  23.3 MB  Rails: /var/www/lovechic/html/current
5140  198.5 MB  22.9 MB  Rails: /var/www/lovechic/html/current
5146  198.5 MB  23.0 MB  Rails: /var/www/lovechic/html/current
### Processes: 10
### Total private dirty RSS: 242.32 MB

通常のRuby:477.94MB
Enterprise Ruby:242.32MB

なんと、49.3%もメモリ使用率が減りました!ものすごい改善率です。
これで処理能力も上がっているというのですから、使わない手はありません。
Enterprise Ruby Editionはruby1.8.7しか出ていませんので、その点はご注意を。

KEMBOのホームページリニューアル

賢房(KEMBO)のホームページをリニューアルしました。
賢房


業務の合間に少しずつ作成してきたものですが、ようやくリリースすることができました。
TOP画面実績(Flash版)KEMBO社員紹介(Flash版)では、Flashでコンテンツを作成していますが、表示するデータは管理画面から簡単に変更することができます。
変更したデータはRuby on Railsがランダムに動的に作成するXMLFlashが読み込んで表示します。
このように作ることでFlashを知らない人でも簡単に様々な用途で使うことが出来ます。

賢房実績



Flash版の他に実績社員紹介はHTML版も用意しています。
HTML版では画像表示に良く使われるlightboxを改造して使っています。
HTML/CSSを読み込むことで、複数の画像を表示できるようにし、テキスト情報も画面右側に表示するようにしました。
一般的にブログなどでは画像の拡大表示に使われることの多いlightboxですが、工夫次第で用途も広がりますね。

賢房実績詳細



RSSリーダー機能も作りました。
外部のブログをRSSで読み込み、ブログを更新することで自動的にページが増えて行く仕組みにしました。
RSS/RDFは様々な企画があり、まだ課題も多いのですが、更新業務を軽減できるこの施策は需要があると思うのでツール化したいところです。


是非一度ご覧になってください!!
http://kembo-net.com

賢房ホームページ

誕生日のお祝い

11/25は私の誕生日でした。

弊社がWEBサイトを制作した和風デザートを楽しめるカフェSakura*Do(桜花堂)
用意してもらったケーキを囲んでハッピーバースデー(中国語では祝〓生日快乐)を歌ってくれました。

思い返せば会社でケーキを貰ってお祝いしてもらうのは初めてです。
忙しい時や辛い時にメンバーの為にもうひと頑張り、もうひと踏ん張りできる気がします。


また、プレゼントやメッセージをくれた皆さま、ありがとうございます!


ちなみに嫁さんからの誕生日ケーキは、昨年の肉まんタワーシリーズに引き続き、ちらしずしタワーでした(笑)
誰にも見せないで〜と口止めされているので掲載できませんが、4合の米で積み上げられたタワーを食べるのに3日かかりました(笑)


また来年もこうして祝ってもらえるよう、縁を大切に皆と良い関係を保てるように1年間がんばりたいと思います。

佐々木真弥32歳今年もがんばります!
宜しくお願いします!

Ruby on Railsで費用対効果の高いコーポレートサイトを

コーポレートサイトと言えば、下記のような構成が多いと思います。

 ・会社紹介(沿革、経営理念、精神、経営体制など)
 ・商品紹介
 ・ニュース
 ・実績紹介
 ・アクセス
 ・リクルート
 ・問い合わせ


弊社ではコーポレートサイトもRuby on Railsで作成しています。
理由は、WEB戦略として、営業ツールとして、活用できるサイトにするためです。
コーポレートサイトは企業にとって必要不可欠ですが、うまく活用出来ていない企業が多いように感じます。
作成後にアクセス解析の結果やお客様の声を聞いて、必要な機能を短いリードタイムで提供していくことが大切です。


弊社ではWEB制作を請け負うだけでなく、サーバ管理から運用までをお手伝いさせて頂き、
WEBサイトの費用対効果がプラスになるよう、最後まで関わらせて頂く方針で初めから取り組むようにしています。
制作に限らず運用は大変ですが、お客様向け、お客様の業種向けに最適化されたサイトを完成させていく喜びはひとしおです。


技術的にもお客様向け管理画面から、サイトに表示される内容(例えばニュースならタイトルと内容)を入力して頂くだけで
ニュースサマリ更新、一覧更新、ページ追加、内部リンク追加、RSS配信、アクセス追跡機能追加、メール配信など全て自動で行い、
SEOに強く最少のルーチンワークで最大の効果を狙えるような作りにもできます。
またメールマガジンからWEBページを自動で更新していくことも可能です。


経済が落ち込んでいる今、システム担当者が不在であったり営業に予算が割り当てられないの企業様も多いと思います。
そんな今こそ、営業戦略としてのコーポレートサイトを見直してみてはいかがでしょうか。

googleで「夫」の後にスペースを入れると・・・にあやかって50音でやってみた

googleで「夫」の後にスペースを入れると・・・と巷で騒がれていますが、50音で試してみました。
ちなみに一文字打った後にスペースは入れずに試しています。

あ アマゾン
い イオン
う うみねこのなく頃に
え エコポイント
お お台場 ガンダム
か 価格.com
き 気象庁
く クックパッド
け けいおん
こ 高校野球
さ 酒井法子
し 新型インフルエンザ
す スカイプ
せ セブンイレブン
そ ソフトバンク
た ためしてガッテン
ち 地図
つ ツタヤ
て 天気予報
と トヨタ
な なす レシピ
に にこにこ
ぬ ぬりえ
ね ねんどろいど
の のりかえ案内
は ハローワーク
ひ ひぐらしのなく頃に
ふ フジテレビ
へ ヘタリア
ほ 翻訳
ま マクドナルド
み みずほ銀行
む 無印
め めざましテレビ
も モンスターハンター3
や やふー
ゆ ゆうちょ銀行
よ よみうりランド
ら ららぽーと
り リクナビ
る ルート検索
れ レクサス
ろ 路線
わ ワンピース
ゐ ゐ勢屋
ゑ ヱヴァンゲリヲン新劇場版
を をくだ屋技研
ん んじゃめな


いやー疲れました(笑)

最近人気のキーワード順で表示されます。
酒井法子新型インフルエンザ、ハローワーク、なす レシピ など世間が今何に興味あるかわかって面白いですね。


幾つか知らないキーワードがありました。

ためしてガッテン ・・・NHK総合テレビで放送している生活情報番組
ねんどろいど ・・・粘土で造形されたデフォルメフィギュア
ひぐらしのなく頃に ・・・同人サークルである07th Expansionが製作した同人ゲーム。これを原作とするドラマCD、漫画、アニメなど
ヘタリア ・・・日丸屋秀和による日本の漫画作品。
んじゃめな ・・・んじゃめな本舗 - 同人サークル。 磨伸映一郎 神星記人? 邪武丸 などが在籍する。※ンジャメナはアフリカの国家チャドに実在する首都の名


数年後に振りかえると面白そうです。

livedoor readerについて

私はRSSリーダーlivedoor readerを使っています。


気に行っている点は、ショートカットキーが豊富で短時間で大量のフィードを読む工夫がされている点です。
キー操作(sで次のフィード、aで前のフィード)を使うと、裏で先読み機能が動作して次のフィードを読んでくれます。
アクセスの遅い中国からは、この機能はとても重要です。


日常的に少しの時間でチェックできるのは個人ブログで20程度、ニュースやはてブ人気エントリー系のフィードで10程度でしょうか。
その中からクリップしておいた5〜10のフィードをさらに深く読むようにしています。
これまで約400フィードを登録してありましたが、飛ばしたいフィードがあると前述の先読み機能が働かないため、思い切って100フィードほどに減らして、ショートカットキーだけで読み進められるようにしました。
特に回線の遅い中国では溜めに溜まったニュースサイトの200エントリを読み込むのに時間がかかるので、このような可能性のあるフィードは休日用と仕分けしました。


整理には時間がかかりましたが、日々のルーチンワークが軽快になったので有意義な時間投資で気分良し!です。

ホームページリニューアル中

KEMBOホームページをリニューアル中です。
日本のデザイナさんやSEOコンサルさん達の知恵をお借りして制作中です。


先日メンバーの撮影会も行いました。
弊社に隣接しているパートナー会社の撮影スタジオを使用しての撮影だったのですが、被写体になるのは初めての経験でした。


来週はRailsSEOに強いCMSを作り込む予定です。
管理画面からページを更新すると自動で下記も更新されます。
 ・sitemap.xml
 ・RSS配信
 ・最新記事
 ・記事一覧
 ・記事詳細
 ・タグクラウド
 ・titleタグ
 ・descriptionタグ
 ・リンク


オープンソースCMSを使えば当たり前の機能かもしれませんが、弊社では全て自前で作りこんでいます。
自前なだけに一歩進んだ(利用者に特化した)プログラムにする予定です!!