【激速】mod_perl SpeedyCGI FastCGI【激速】
mod_perlを04Webserverで使用してみたいのですが、
mod_perl.dllの仕様、使い方について解説されている
ページとか有りませんか? そんな馬鹿なことせずに apache 使えばよろし。 SpeedyCGI使えばPerl側だけの問題で済ませるやん。 前スレに書いちゃって、誘導されてきました。前スレ995です。
↓こういう質問なんですが・・・。
mod_perlを設定中な者ですが、一つどこのサイトにも明示的には書いてない気が
して、あきらかにしたいんですが、、、
ModPerl::Registry を使って .cgiを動かしても、その.cgiファイル内からuseしたり使
っているモジュールは、別途PerlRequireで指定のスクリプト内でuseしてロードしな
ければならないのでしょうか?
現在実験している環境だと、PerlRequire経由でuseでロードしないモジュールは、
perl-statusの "Loaded Modules"には出てきません。僕の勝手な想像では、
「ModPerl::Registryが呼び出した.cgiがuseしているモジュール」は、適宜ロード
されて、perl-statusにも表示されるんじゃないかと予想していたんですが、それは
ちがうんでしょうかね?
当方の設定ミスなのか、仕様なのかがいまいちはっきり分らないので、聞いてみます。。。 どのタイミングで、どのプロセスが、モジュールを読みこんでいるのか?
どのプロセスが読み込み済みのモジュールをチェックしようとしているのか?
ってのを意識しながら動作検証するといいといいんじゃない?
mod_perl時の場合END{}はプロセスが終了した時のみに実行されますが
mod_perl時にPerl/CGIのEND{}と同様の事をしたい場合どうするのが一番良いのでしょうか。 >>8
mod_perlにそういうhookが用意されていないと無理 たいていオブジェクト指向バリバリで書くからsub DESTROYでも用意しておけばいいんじゃね? 了解です、ありがとうございます。
取りあえず
*CORE::GLOBAL::exit = sub { hogehoge(); \&Apache::exit } if$ENV{MOD_PERL};
のようにしてexitをオーバーライドしてexitの前に割り込ませる事にしました。
どんな処理でも必ずexitされるわけではないですけど。 mod_perlをapacheで走らせてるときに、
apacheのerror_logに任意のテキストを出力したりすることって
出来るんでしょうか? mod_perlなら
http://search.cpan.org/~gozer/mod_perl-1.29/Log/Log.pm
これ。
mod_perl2なら
http://search.cpan.org/~pgollucci/mod_perl-2.0.2/docs/api/Apache2/Log.pod
これかな? Log4perl とか使えば、あんなことやこんなことできるんでは? 前スレから疑問なんだけど、なぜにSpeedyCGIではなくmod_perlなの?
両方使ったが、
1.体感スピード
同じ
2.メモリ消費
愕然とするほどの差
3.導入の障害
圧倒的にSpeedyCGI有利
どちらもPerl専用アクセラレータだけどわざわざ選ぶメリットが見つけられん。 Apachモジュールをperlで書けるからでしょ。 > 2.メモリ消費
> 愕然とするほどの差
何か間違えてない? >>18
> Apachモジュールをperlで書けるからでしょ。
でしょうね。
アクセラレータとして使うメリットはみつけられない。
>>19
> > 2.メモリ消費
> > 愕然とするほどの差
>
> 何か間違えてない?
そのままお返しします。
mod_perlをはじめて使った時は感動したが、後で愕然とした。
しかも太る一方。
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
そのまま使い続けたが、他のアプリがスワップしはじめガリガリいいだしたのでSpeedyCGIに変えた。
しかも太る一方。
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
↑間違い
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
しかも太る一方。 > mod_perlをはじめて使った時は感動したが、後で愕然とした。
> しかも太る一方。
> topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
apache の設定がわからんからといって、mod_perl のせいにしてはいかんよね。 >>22
めちゃくちゃ言うなあ。
mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。
逆にそちらではどれくらいのサイズなんだ? >>23
> めちゃくちゃ言うなあ。
どこらへんが滅茶苦茶なのだろう。
> mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。
そうでしょうね。
> 逆にそちらではどれくらいのサイズなんだ?
アプリケーションの規模によるよね。 mod_perlでApacheが太るからわざわざリバースプロキシ使ってるんではなかったのか?
mod_perlに限らずmod_php、mod_ruby等もメモリの食いっぷりがすごいが。 mod_perl 等を使う時は、フロントエンドとバックエンドに分けて使う。
フロントエンドで画像等をさばき、それ以外のものをバックエンドに送る。
バックエンド側で起動する perl のプロセスは、積んでいるメモリで決める。
そこらへん、mixi なり hatena bookmark なりの資料探して読むとわかるとおもう。 >>24
あほくさ。
> > mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。
>
> そうでしょうね。
設定正しいって事やないか。
Apacheでmod_perlのメモリの制御はできん。
> > 逆にそちらではどれくらいのサイズなんだ?
>
> アプリケーションの規模によるよね。
使った事がないんだな。
そんな単純な食い方はしない。 > Apacheでmod_perlのメモリの制御はできん。
メモリの使用量でなく、プロセスの数を調整する。
で、定期的に再起動するようなオプションあるよね。 >>26
当然そういうことだが。
言葉がうわすべりしてないか?
mod_perlでリバースプロキシ使うのは、
1.mod_perlでApacheが太り、静的サービスの反応が鈍る。
2.解決策として静的サービスには別のApacheを使う。
こういうことなんだが。
何も別マシンにリバースプロキシかけなくても静的サービスのスピード向上はできるよ。 >>30
別マシンとはひとことも言っていませんね。
>>29
> メモリの使用量でなく、プロセスの数を調整する。
> で、定期的に再起動するようなオプションあるよね。
面白いこと言うな。
プロセスの数は調整できんよ。
ある回数起動したらプロセス死ぬ設定はできるが、プロセスの数は運まかせになるよ。 >>34
で君はそのページをまねて、実際にどれくらい節約できた? >>34
http://d.hatena.ne.jp/babie/20060201/p3
何やこれ。
1.Apacheが太るので子プロセスの数を制限する。
2.静的コンテンツのスピード確保にリバースプロキシを使う。
3.Apache自体をできるだけ太らせない。
当たり前のことやんか。
何も新しいものあらへん。 mod_perl使いたきゃ、
専用の鯖がいるってことでそ。 >>34
http://d.hatena.ne.jp/babie/20060201/p3
>テスト機で試した。MaxClients 調整前はめっさ重くなる(SSHまで!)。
>MaxClients 調整後はなんとか耐えられる。
なんとか耐えられるんだってよ。 静的なもんも、動的なもんも、とりあえず一台でさばけて、
なおかつcgiも速くなるってのはどれ? >>48
規模によってmod_perlがSpeedyCGIを上回ることがあんの? >>48
規模が大きいほどmod_perl不利。
セッション数を捌けない。
規模が小さくてもやはり不利。
無用にApacheが圧迫されている。 FastCGIって、mod_perlやSpeedyCGIに比べるとどんなん? 優秀。
SpeedyCGI同様にプロセス数を自由に設定できる。
Apacheと別プロセスなので、それによってApacheのMaxClientsが制限を受けない。
1.SpeedyCGIは導入は容易。
Perl内部の問題で終わらせられる。
必要ならApacheモジュールもある。
2.FastCGIはアプリ起動用スクリプトと、Apacheの設定が必要。
ただし、ほぼ言語を問わず使用できるので、言語が混在しているサイトには有利。
最近lighttpdとの組み合わせが一部で人気?
スピードはどれも意味のある差はない。 mod_perlは
1.メモリの管理が非常に下手。
2.導入時にmod_perl独自の制限がある。
(カレントDirがPerlとは違う。使えない文法がある)
以上の点でSpeedyCGI、FastCGIに比べ劣るが、逆に有利な点は不明。 FastCGI安定してるなぁ。
応用も利きそうなのでいい感じかも >>53
ベンチはそれほど意味がないよ。
引用先も、対象ベンチ次第でで結果がころころ変わっている。
しかし、mod_perlはベンチでも負けている記事が目立つ。 mod_perl って 3 系統くらいあった気がするけど、だれか違いを説明きぼん。 このスレの住人ってなぜにmod_perlにしがみつくの?
mod_perlは一体どこがアドバンテージ? なにをもって「mod_perlにしがみつく」ということにしたいのだろう。 C/FastCGIとPerl/FastCGIってどのくらい速度が違うか実践した方います?
Cの方が早いだろうけどインタープリタ部分のコストを除いた純粋な言語の速度対決なら
C/CGI vs Perl/CGIほどの差は出ないと思うのですが実際のところどのぐらい違うでしょうか。 > mod_perlは一体どこがアドバンテージ?
必死だが、答えられないmod_perl厨は逝ってよし。 >>67
試してないので机上の空論ですまそ。
Cはコンパイル時に非常に長い時間をかけて最適化を行うので、一瞬でコンパイルする必要があるPerlコンパイラとはやはり根本的な差があると思う。
そうでなければ、Cが今だに強い理由はないと思う。
しかし、大きく差が詰まるのは間違いないよね。 >> そうでなければ、Cが今だに強い理由はないと思う。
Web アプリの分野で?w >>72
まさか。
速度が必要な分野で。
OS、DB、科学技術計算。 >>67
Win上で同じくネイティブコードを吐く、VBとCの速度差にビビった経験があるな。
.NETでは言語間の速度差はほぼ無いようだが。 本格的に大規模なサイトだと、重い処理はCで書いて、それをPerlやPHPから使うって言うのが解決策になってるんじゃないかな。
ヤフーとかもそうでしょう。 まぁ各ファイルで共通の手続きはできるだけモジュールに括り出すんだな。 >>77
Cの処理速度にはまじでビビるよ。
I/Oかかえていても速い。 CPUが直接食える状態になってるからな。
ボトルネックになるディスクI/Oを減らすために少しでもI/Oの速いメモリに溜め込むけど
その結果メモリを馬鹿食いと。 >>79
mod_perlの馬鹿食いはそのせいだけじゃないよ。
mod_perlはApacheの全子プロセスに問答無用でPerlインタプリタを埋め込む。
コードのキャッシュも全子プロセスが持つ。
結果的に、同じコピーが大量に作られる。
SpeedyCGIを運用しているが、常駐インタープリタは2個で充分。
リクエストが多い時はまたされるだけ。
ちゃんと捌く。
mod_perl運用時に比べメモリ使用量は激減した。
mod_perlはアクセラレータとしては、仕様に大きな問題があると思う。 preforkはアレだが、workerならある程度再利用が有効に効かない? >>81
その通りなんだけど、workerは1.3系列はダメじゃなかったかな?
効果もある程度だしね。
FastCGI、SpeedyCGIがインタープリタの数等、リソースを自由にコントロールできるのに対して仕様自体が???ではないの。 原理的には、プロセス間通信のないmod_perlは速度的に優位なはずだが、
どこのベンチをみても有意な差がない。
というより、むしろ負け気味。
たとえ原理通りになっても、現実には無意味な程度だと思う。 とりあえず、”アクセラレータ"としては、SpeedCGIか、FastCGIでってことでオケ?
無茶な使いかたしなければmod_perlでもいんじゃね? http://d.hatena.ne.jp/babie/20060201/p3
>テスト機で試した。MaxClients 調整前はめっさ重くなる(SSHまで!)。
>MaxClients 調整後はなんとか耐えられる。 >MaxClients 調整後はなんとか耐えられる。
>MaxClients 調整後はなんとか耐えられる。
>MaxClients 調整後はなんとか耐えられる。 ベンチマークすら提示せずに否定に走られてもねぇ。
>>80
> mod_perlの馬鹿食いはそのせいだけじゃないよ。
> mod_perlはApacheの全子プロセスに問答無用でPerlインタプリタを埋め込む。
> コードのキャッシュも全子プロセスが持つ。
> 結果的に、同じコピーが大量に作られる。
これに関しては、何を言いたいのかさっぱりわかりませんね。
このスレ見てるとmod_perlうんこな流れだけど
mixiやはてながmod_perlで運用してるのは何か理由があるの? Apacheモジュールだからというだけで食いつきがいいような希ガス。
本物を見極められない哀れなmod_perler〜♪ >>90
その本物とやらは、どんなものなんでしょう? まだ自分専用のスレと勘違いしたままのmod_perl厨カワイソス >>89
> このスレ見てるとmod_perlうんこな流れだけど
> mixiやはてながmod_perlで運用してるのは何か理由があるの?
理由が知りたいから、
「mod_perlは一体どこがアドバンテージ?」
mod_perl厨に聞きつづけてるんだが。
未だに返事はなし。 「mod_perlは一体どこがアドバンテージ?」
これに返事もできない状態で
「mixiが...」
「はてなが...」
「ホリエモンの子飼いが...」
こんな話ばっかりやられてもねえ。
わからいなら、黙っとけ。 >>88
> ベンチマークすら提示せずに否定に走られてもねぇ。
>
> >>80
> > mod_perlの馬鹿食いはそのせいだけじゃないよ。
> > mod_perlはApacheの全子プロセスに問答無用でPerlインタプリタを埋め込む。
> > コードのキャッシュも全子プロセスが持つ。
> > 結果的に、同じコピーが大量に作られる。
>
> これに関しては、何を言いたいのかさっぱりわかりませんね。
とてもユニークな意見やね。
どんなベンチとるんだろうか?
俺ならtopコマンド叩く程度しか思いつかんが。 >>94
同意。
しかもmixiが重いって話になると、今度は
「それはMySQLのせいらしい。」
とくる。
「mixiやはてながやってるから正しいんだろう。」
これ以上のものは見えてこない。
うんざり。 mixiがやろうと、はてながやろうと、間違ってると思えばその通りに発言できる。
それが、こういう場所の良さではないのか? >>85
”アクセラレータ"としてのmod_perl自体が無茶かと...
実績があるからじゃないの。mixiやはてなクラスなら、フロントサーバとアプリケーションサーバを分けて運用するの、どのみち必須だろうし。 あまりにもレス食いつきの良さに
なんだかアンチmod_perlが必死に見えるよ
落ち着こう