<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ひげろぐ &#187; mod_rails</title>
	<atom:link href="http://brass.to/blog/tag/mod_rails/feed" rel="self" type="application/rss+xml" />
	<link>http://brass.to/blog</link>
	<description>技術者として仕事人としての思うところや覚え書きやらです</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:07:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>mod_rails安定稼働中</title>
		<link>http://brass.to/blog/mod_rails_memory.html</link>
		<comments>http://brass.to/blog/mod_rails_memory.html#comments</comments>
		<pubDate>Wed, 28 May 2008 13:38:25 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://brass.to/blog/mod_rails_memory.html</guid>
		<description><![CDATA[先週くらいからアウトドア用品価格比較をmod_railsで動かしているけど、問題なく動作している。
mongrelをクラスターで動かすよりいいかんじ。
メモリ消費量を心配してたけどそれほど大変でもなかった。

  USER&#160;&#160;&#160;&#160;&#160;&#160; PID %CPU %MEM&#160;&#160;&#160; VSZ&#160;&#160; RSS TTY&#160;&#160;&#160;&#160;&#160; STAT START&#160;&#160; TIME COMMAND
  root&#160;&#160;&#160;&#160; 16483&#160; 0.0&#160; 0.6 123616&#160; 6572 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; Ssl&#160; 14:34&#160;&#160; 0:00 /usr/sbin/httpd
  root&#160;&#160;&#160;&#160; 16485&#160; 0.0&#160; 0.8&#160; 14320&#160; 8952 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:00 Passenger spawn server
  apache&#160;&#160; 16490&#160; 0.0&#160; 1.6&#160; 62644 17140 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:26 /usr/sbin/httpd
  apache&#160;&#160; 16493&#160; 0.1&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>先週くらいから<a href="http://outdooritem.net/" target="_blank">アウトドア用品価格比較</a>をmod_railsで動かしているけど、問題なく動作している。<br />
mongrelをクラスターで動かすよりいいかんじ。</p>
<p>メモリ消費量を心配してたけどそれほど大変でもなかった。</p>
<pre><code>
  USER&#160;&#160;&#160;&#160;&#160;&#160; PID %CPU %MEM&#160;&#160;&#160; VSZ&#160;&#160; RSS TTY&#160;&#160;&#160;&#160;&#160; STAT START&#160;&#160; TIME COMMAND
  root&#160;&#160;&#160;&#160; 16483&#160; 0.0&#160; 0.6 123616&#160; 6572 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; Ssl&#160; 14:34&#160;&#160; 0:00 /usr/sbin/httpd
  root&#160;&#160;&#160;&#160; 16485&#160; 0.0&#160; 0.8&#160; 14320&#160; 8952 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:00 Passenger spawn server
  apache&#160;&#160; 16490&#160; 0.0&#160; 1.6&#160; 62644 17140 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:26 /usr/sbin/httpd
  apache&#160;&#160; 16493&#160; 0.1&#160; 1.6&#160; 62600 17188 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:30 /usr/sbin/httpd
  apache&#160;&#160; 16950&#160; 0.0&#160; 1.6 103580 17220 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:38&#160;&#160; 0:23 /usr/sbin/httpd
  apache&#160;&#160; 16491&#160; 0.1&#160; 1.6&#160; 62668 17288 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:30 /usr/sbin/httpd
  apache&#160;&#160; 16488&#160; 0.0&#160; 1.6&#160; 52420 17300 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:23 /usr/sbin/httpd
  apache&#160;&#160; 16492&#160; 0.1&#160; 1.6&#160; 62612 17304 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:30 /usr/sbin/httpd
  apache&#160;&#160; 16954&#160; 0.1&#160; 1.6 113880 17308 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:38&#160;&#160; 0:32 /usr/sbin/httpd
  apache&#160;&#160; 17609&#160; 0.1&#160; 1.6 124116 17432 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:45&#160;&#160; 0:29 /usr/sbin/httpd
  apache&#160;&#160; 14929&#160; 1.0&#160; 2.0&#160; 27408 21340 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 22:27&#160;&#160; 0:00 Passenger ApplicationSpawner: /var/www/outdooritem
  root&#160;&#160;&#160;&#160; 16602&#160; 0.0&#160; 2.0&#160; 27148 21520 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 14:34&#160;&#160; 0:01 Passenger FrameworkSpawner: 2.0.2
  apache&#160;&#160; 13317&#160; 2.0&#160; 3.6&#160; 43168 37308 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160; S&#160;&#160;&#160; 22:02&#160;&#160; 0:27 Rails: /var/www/outdooritem</code></pre>
<p>稼働してしばらく置いておくと「/usr/sbi/httpd」たちのVSZがものによっては100MB以上とか肥大化しているのでちょっとびびるけど、RSSは安定して20MB以下だしhttpdのプロセスも定期的に生まれ変わるようになっているので問題ないかなと。<br />
Railsと直接関係しない（public以下の静的ファイルの面倒は見てくれるが）httpdプロセスの状況は、VSZが増えて行くところ以外はmod_rails導入前と大して変わらない。<br />
<a href="http://brass.to/blog/mod_rails_first.html" target="_blank">前のエントリ</a>ではVSZが増えたのをメモリ消費量増えたと表現してた。けどちゃんと見たら実メモリ使用量は大して変わってなかった。もちろんパフォーマンス的にも問題はない。 </p>
<p>「Rails: /var/www/outdooritem」は普段はひとつだけど、連続したアクセスが増えてくると現状で数個くらいにまで増える。（デフォルトの状態で最大20個までのようだ）<br />
このプロセスはひとつにつきRSSが35MB～40MB程度なので、プロセスひとつ当たりのメモリ消費はmongrelと比べて少ないくらい。<br />
「Passenger*」たちを加えると1プロセス動作時の実メモリ使用量は若干増えるけど、プロセスが増えるほどmod_railsの方が有利になる。 </p>
<p>またmongrelは時間のかかるリクエストを処理している状態で次のリクエストが来ると、前のリクエストが終わるまで次のリクエストを待たせるけど、mod_railsは適宜プロセスを増やして柔軟に対応してくれる。<br />
このあたりはmongrelでクラスター組むよりすぐれている。 </p>
<p>Apacheのmod_proxy_balancerと複数のmongrelで組んだクラスターでは、クラスター内のbusyなプロセスにもリクエストを割り振るので時々クライアントを待たせる状態が発生していた。<br />
なのでmongrelを5個くらい立ち上げてごまかしてたんだけど、その状況に比べるとmod_railsを使っている現在の方が断然健全な状態になった。 </p>
<p>参考までに実メモリ消費量でざっくり比較すると以下のようなかんじになっていて、メモリ1GBで他にもいろいろとやらせていることのあるマシンではけっこう助かっている。 </p>
<ul>
<li>mongrel 50MB/process * 5 = 250MB</li>
<li>Passenger*の合計 50MB + Rails:* 40MB/process * 3 = 170MB </li>
</ul>
<p>プロセス数が1個の状態で比較するとmongrelの方が40MBくらいお得だけど、mongrelを複数立ち上げてクラスターを組むようならmod_railsの方が楽だし負荷にも柔軟だなぁ。<br />
クラスター内のmongrelに処理を割り振るためにリバースプロキシとか使う面倒もないし。 </p>
<p>ちなみに現時点で1日当たりのアクセスは6000～9000リクエスト程度。<br />
Googlebotがスゲーお得意様です。</p>
<h5>近況</h5>
<p><a href="http://markezine.jp/a/article/aid/3813.aspx" target="_blank">MarkeZine：◎少年ジャンプの歴代人気キャラが駅貼りポスターで競演、缶コーヒー「ルーツ」キャンペーン</a></p>
<p>今日たまたまJR町田駅で見かけたが、悟空の言ってることがあまりにローカルネタすぎて吹いたｗ<br />
あなどれねぇぜ町田。</p>
]]></content:encoded>
			<wfw:commentRss>http://brass.to/blog/mod_rails_memory.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passengerことmod_railsを使ってみた</title>
		<link>http://brass.to/blog/mod_rails_first.html</link>
		<comments>http://brass.to/blog/mod_rails_first.html#comments</comments>
		<pubDate>Sun, 18 May 2008 14:54:39 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://brass.to/blog/mod_rails_first.html</guid>
		<description><![CDATA[httpd.confでDocumentRootのディレクトリ名を間違えてパーミッションではまった以外は簡単に導入できた。    Apacheモジュールのインストーラ周りはかなりしっかりしていて、足りないライブラリがあると明示してくれる上、それをインストールするためのyumのコマンドまで教えてくれたりする。     親切だ。     インストールでつまずく人はほとんどいないだろうな。
しかし自作のアプリを動かしてみると以下の問題が出た。

database.ymlの中でMySQLのソケット位置に関するハックが使えない （※環境によっては使えた。不思議）
BackgrounDrbとの通信がうまくできずサーバーエラーとなる 

いずれもちょっと特殊ケースになるのかもしれないが、商用レベルで動かしているアプリケーションを移行する場合はしっかりテストはした方がよいと思われる。    こういう時のテストはSeleniumがよさげだなぁ。
あとメモリの消費量はけっこうでかい。    PHP5込みのApache2で1プロセス当たり30MB程度だったのが50MBにふくれあがった。     mongrelは1プロセス当たり5MBから6MB程度なのでだいぶ違う。 50MBから60MB。桁間違ってた。     これはメモリの貧弱なマシンにはけっこうきついなー。と、間違い分で認識を改めつつもやはりApacheのプロセスがいくつも立ち上がってしまうときついかなぁ。抑制するオプションはあるっぽいけど。
とは言え、Apacheで簡単にRails運用できる意義はやっぱり大きい。    fast-cgiの設定もいらなくなるし、public以下の.htaccessとかいじる必要もなくなるし（.htaccessは明示的に読ませない限り読まれない。読まなくても勝手にmod_railsがよきに計らってくれる）     バーチャルホストを定義するだけでいいというのは本当にお手軽。
GithubのPassengerのプロジェクトを見ると毎日怒濤のコミットがなされているのでbetaが取れる日も遠くはなさそうだ。
参考
Overview &#8212; Phusion Passenger (a.k.a. mod_rails)
追記
メモリ関連はそんなに心配するほどでもなかった。
mod_rails安定稼働中 &#8211; ひげろぐ
]]></description>
			<content:encoded><![CDATA[<p>httpd.confでDocumentRootのディレクトリ名を間違えてパーミッションではまった以外は簡単に導入できた。    <br />Apacheモジュールのインストーラ周りはかなりしっかりしていて、足りないライブラリがあると明示してくれる上、それをインストールするためのyumのコマンドまで教えてくれたりする。     <br />親切だ。     <br />インストールでつまずく人はほとんどいないだろうな。</p>
<p>しかし自作のアプリを動かしてみると以下の問題が出た。</p>
<ul>
<li><a href="http://brass.to/blog/database_yml.html" target="_blank">database.ymlの中でMySQLのソケット位置に関するハック</a>が使えない （※環境によっては使えた。不思議）</li>
<li>BackgrounDrbとの通信がうまくできずサーバーエラーとなる </li>
</ul>
<p>いずれもちょっと特殊ケースになるのかもしれないが、商用レベルで動かしているアプリケーションを移行する場合はしっかりテストはした方がよいと思われる。    <br />こういう時のテストはSeleniumがよさげだなぁ。</p>
<p>あとメモリの消費量はけっこうでかい。    <br />PHP5込みのApache2で1プロセス当たり30MB程度だったのが50MBにふくれあがった。     <br />mongrelは1プロセス当たり<s>5MBから6MB程度なのでだいぶ違う。 </s>50MBから60MB。桁間違ってた。     <br /><s>これはメモリの貧弱なマシンにはけっこうきついなー。</s>と、間違い分で認識を改めつつもやはりApacheのプロセスがいくつも立ち上がってしまうときついかなぁ。抑制するオプションはあるっぽいけど。</p>
<p>とは言え、Apacheで簡単にRails運用できる意義はやっぱり大きい。    <br />fast-cgiの設定もいらなくなるし、public以下の.htaccessとかいじる必要もなくなるし（.htaccessは明示的に読ませない限り読まれない。読まなくても勝手にmod_railsがよきに計らってくれる）     <br />バーチャルホストを定義するだけでいいというのは本当にお手軽。</p>
<p>GithubのPassengerのプロジェクトを見ると毎日怒濤のコミットがなされているのでbetaが取れる日も遠くはなさそうだ。</p>
<h4>参考</h4>
<p><a href="http://www.modrails.com/" target="_blank">Overview &#8212; Phusion Passenger (a.k.a. mod_rails)</a></p>
<h4>追記</h4>
<p>メモリ関連はそんなに心配するほどでもなかった。</p>
<p><a href="http://brass.to/blog/mod_rails_memory.html" target="_blank">mod_rails安定稼働中 &#8211; ひげろぐ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brass.to/blog/mod_rails_first.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
