昨日インストールした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系がアレ…。ってのはありますが…。