Ruby Enterprise EditionによってRedmineのメモリ使用量を42%節約

Linux

昨日インストールしたRedmineですが、格安VPSで動かすにはちとメモリを使いすぎる。

Ruby Enterprise Editionでpassengerを動かして、45%ものメモリを節約することに成功した。

その一部始終を語ろう。

現在の環境は昨日の記事を参照してください。

それでは、インストールしてみましょう。

スポンサーリンク

Ruby Enterprise Editionをインストールする。

Download — Ruby Enterprise Edition

Ubuntu Linuxのタブをクリックして環境にあったパッケージを選ぶ。

$ wget http://rubyforge.org/frs/download.php/71098/ruby-enterprise_1.8.7-2010.02_amd64_ubuntu10.04.deb
$ sudo dpkg -i ruby-enterprise_1.8.7-2010.02_amd64_ubuntu10.04.deb
$ sudo apt-get install apache2-threaded-dev
$ sudo /usr/local/bin/passenger-install-apache2-module

こんな感じのメッセージが出てくれば成功。

The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
   LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14
   PassengerRuby /usr/local/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!

各種設定を変更しろといわれてるので変更する。

/etc/apache2/mods-available/passenger.load

#LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so

/etc/apache2/mods-available/passenger.conf

<IfModule mod_passenger.c>
#  PassengerRoot /usr
#  PassengerRuby /usr/bin/ruby
  PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14
  PassengerRuby /usr/local/bin/ruby
  PassengerDefaultUser www-data
  PassengerMaxPoolSize 1
  PassengerPoolIdleTime 60
</IfModule>
||<<
Redmineに必要なgemも先にインストールしておきましょう。
>|shell|
$ sudo /usr/local/bin/gem install builder
$ sudo /usr/local/bin/gem install xml-simple

あとはapacheを再起動するだけなのですが、メモリの使用量を確認しておきましょう。

$ sudo passenger-memory-stats
---------- Apache processes ----------
PID    PPID   VMSize    Private  Name
--------------------------------------
20684  1      241.3 MB  1.8 MB   /usr/sbin/apache2 -k start
20701  20684  262.6 MB  27.0 MB  /usr/sbin/apache2 -k start
20702  20684  263.3 MB  22.9 MB  /usr/sbin/apache2 -k start
20703  20684  252.1 MB  14.6 MB  /usr/sbin/apache2 -k start
20704  20684  260.8 MB  20.9 MB  /usr/sbin/apache2 -k start
20705  20684  259.7 MB  20.7 MB  /usr/sbin/apache2 -k start
### Processes: 6
### Total private dirty RSS: 107.86 MB
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID    VMSize    Private  Name
-------------------------------
20696  55.5 MB   7.5 MB   Passenger spawn server
21185  202.6 MB  52.9 MB  Passenger ApplicationSpawner: /usr/share/redmine
22215  230.6 MB  80.8 MB  Rails: /usr/share/redmine
### Processes: 3
### Total private dirty RSS: 141.30 MB

141.30 MBも使っている状態ですね。では、apacheを再起動してみましょう。

$ sudo a2dismod passenger
$ sudo a2enmod passenger
$ sudo /etc/init.d/apache2 restart

無事にRedmineが動いているか動作を確認してください。一通り確認し終わってから、メモリの使用量を見てみましょう。

$ sudo passenger-memory-stats
---------- Apache processes ----------
PID    PPID   VMSize    Private  Name
--------------------------------------
19019  1      241.3 MB  1.7 MB   /usr/sbin/apache2 -k start
19036  19019  258.8 MB  19.7 MB  /usr/sbin/apache2 -k start
19037  19019  262.9 MB  21.9 MB  /usr/sbin/apache2 -k start
19038  19019  279.6 MB  45.6 MB  /usr/sbin/apache2 -k start
19039  19019  258.8 MB  19.7 MB  /usr/sbin/apache2 -k start
19040  19019  263.2 MB  28.0 MB  /usr/sbin/apache2 -k start
### Processes: 6
### Total private dirty RSS: 136.54 MB
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID    VMSize    Private  Name
-------------------------------
19031  78.5 MB   10.1 MB  Passenger spawn server
19050  181.4 MB  34.1 MB  Passenger ApplicationSpawner: /usr/share/redmine
19428  185.4 MB  38.2 MB  Rails: /usr/share/redmine
### Processes: 3
### Total private dirty RSS: 82.47 MB

Passengerのプロセスは136.54 MBから82.47 MBに減っています。大成功です。apacheのプロセスサイズが増えていますが他のバーチャルホストのアクセスによって増減することと、トータルのメモリ使用量は減っています。きっと、大規模なアプリケーションであれば、もっと効果を得られるはずです。(*1)

*1: 1.8系がアレ…。ってのはありますが…。

タイトルとURLをコピーしました