トップページ⇒php
851コメント342KB

【激速】mod_perl SpeedyCGI FastCGI【激速】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/05(月) 20:01:09ID:+YcYjDiD
mod_perl
http://perl.apache.org/

SpeedyCGI
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod

前スレ
mod_perlを使おう!
http://pc8.2ch.net/test/read.cgi/php/1005122528/

ー二三ヘ( ゚∀゚)ノ
0002nobodyさんNGNG
僕の肛門も高速化されそうです
0003nobodyさん2006/06/05(月) 20:31:26ID:???
mod_perlを04Webserverで使用してみたいのですが、
mod_perl.dllの仕様、使い方について解説されている
ページとか有りませんか?
0004nobodyさん2006/06/05(月) 23:59:14ID:???
そんな馬鹿なことせずに apache 使えばよろし。
0005nobodyさん2006/06/06(火) 21:19:24ID:???
SpeedyCGI使えばPerl側だけの問題で済ませるやん。
0006nobodyさん2006/06/07(水) 16:43:05ID:2I/qpjTz
前スレに書いちゃって、誘導されてきました。前スレ995です。
↓こういう質問なんですが・・・。


mod_perlを設定中な者ですが、一つどこのサイトにも明示的には書いてない気が
して、あきらかにしたいんですが、、、

ModPerl::Registry を使って .cgiを動かしても、その.cgiファイル内からuseしたり使
っているモジュールは、別途PerlRequireで指定のスクリプト内でuseしてロードしな
ければならないのでしょうか?

現在実験している環境だと、PerlRequire経由でuseでロードしないモジュールは、
perl-statusの "Loaded Modules"には出てきません。僕の勝手な想像では、
「ModPerl::Registryが呼び出した.cgiがuseしているモジュール」は、適宜ロード
されて、perl-statusにも表示されるんじゃないかと予想していたんですが、それは
ちがうんでしょうかね?

当方の設定ミスなのか、仕様なのかがいまいちはっきり分らないので、聞いてみます。。。
0007nobodyさん2006/06/08(木) 20:07:46ID:???
どのタイミングで、どのプロセスが、モジュールを読みこんでいるのか?
どのプロセスが読み込み済みのモジュールをチェックしようとしているのか?

ってのを意識しながら動作検証するといいといいんじゃない?
0008nobodyさん2006/06/13(火) 00:27:19ID:???
mod_perl時の場合END{}はプロセスが終了した時のみに実行されますが
mod_perl時にPerl/CGIのEND{}と同様の事をしたい場合どうするのが一番良いのでしょうか。
0009nobodyさん2006/06/13(火) 00:58:15ID:???
>>8
mod_perlにそういうhookが用意されていないと無理
0010nobodyさん2006/06/13(火) 01:02:12ID:???
たいていオブジェクト指向バリバリで書くからsub DESTROYでも用意しておけばいいんじゃね?
001182006/06/13(火) 02:41:06ID:???
了解です、ありがとうございます。
取りあえず
*CORE::GLOBAL::exit = sub { hogehoge(); \&Apache::exit } if$ENV{MOD_PERL};
のようにしてexitをオーバーライドしてexitの前に割り込ませる事にしました。
どんな処理でも必ずexitされるわけではないですけど。
0012nobodyさんNGNG
mod_perlをapacheで走らせてるときに、
apacheのerror_logに任意のテキストを出力したりすることって
出来るんでしょうか?
0013nobodyさん2006/06/13(火) 06:11:59ID:???
stderrにprintしる!
0014nobodyさん2006/06/13(火) 06:30:45ID:Nn2106Uk
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
これかな?
0015nobodyさんNGNG
おぉ、どうもですー。
0016nobodyさん2006/06/13(火) 12:49:11ID:???
Log4perl とか使えば、あんなことやこんなことできるんでは?
0017nobodyさん2006/06/13(火) 20:23:39ID:???
前スレから疑問なんだけど、なぜにSpeedyCGIではなくmod_perlなの?
両方使ったが、
1.体感スピード
  同じ
2.メモリ消費
  愕然とするほどの差
3.導入の障害
  圧倒的にSpeedyCGI有利

どちらもPerl専用アクセラレータだけどわざわざ選ぶメリットが見つけられん。
0018nobodyさん2006/06/13(火) 20:36:37ID:???
Apachモジュールをperlで書けるからでしょ。
0019nobodyさん2006/06/13(火) 20:39:24ID:???
> 2.メモリ消費
>   愕然とするほどの差

何か間違えてない?
0020nobodyさん2006/06/13(火) 21:03:44ID:???
>>18
> Apachモジュールをperlで書けるからでしょ。
でしょうね。
アクセラレータとして使うメリットはみつけられない。

>>19
> > 2.メモリ消費
> >   愕然とするほどの差
>
> 何か間違えてない?
そのままお返しします。
mod_perlをはじめて使った時は感動したが、後で愕然とした。
しかも太る一方。
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
そのまま使い続けたが、他のアプリがスワップしはじめガリガリいいだしたのでSpeedyCGIに変えた。
0021nobodyさん2006/06/13(火) 21:05:17ID:???
しかも太る一方。
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。

↑間違い
topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。
しかも太る一方。
0022nobodyさん2006/06/13(火) 22:00:36ID:???
> mod_perlをはじめて使った時は感動したが、後で愕然とした。
> しかも太る一方。
> topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。

apache の設定がわからんからといって、mod_perl のせいにしてはいかんよね。
0023nobodyさん2006/06/13(火) 22:09:37ID:???
>>22
めちゃくちゃ言うなあ。
mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。

逆にそちらではどれくらいのサイズなんだ?
0024nobodyさん2006/06/13(火) 22:13:19ID:???
>>23
> めちゃくちゃ言うなあ。

どこらへんが滅茶苦茶なのだろう。

> mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。

そうでしょうね。

> 逆にそちらではどれくらいのサイズなんだ?

アプリケーションの規模によるよね。
0025232006/06/13(火) 22:15:54ID:???
mod_perlでApacheが太るからわざわざリバースプロキシ使ってるんではなかったのか?
mod_perlに限らずmod_php、mod_ruby等もメモリの食いっぷりがすごいが。
002622, 242006/06/13(火) 22:19:13ID:???
mod_perl 等を使う時は、フロントエンドとバックエンドに分けて使う。
フロントエンドで画像等をさばき、それ以外のものをバックエンドに送る。

バックエンド側で起動する perl のプロセスは、積んでいるメモリで決める。
そこらへん、mixi なり hatena bookmark なりの資料探して読むとわかるとおもう。
0027232006/06/13(火) 22:20:52ID:???
>>24
あほくさ。

> > mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。
>
> そうでしょうね。

設定正しいって事やないか。
Apacheでmod_perlのメモリの制御はできん。

> > 逆にそちらではどれくらいのサイズなんだ?
>
> アプリケーションの規模によるよね。
使った事がないんだな。
そんな単純な食い方はしない。
0028nobodyさんNGNG
(・∀・)ニヤニヤ
0029nobodyさん2006/06/13(火) 22:23:13ID:???
> Apacheでmod_perlのメモリの制御はできん。

メモリの使用量でなく、プロセスの数を調整する。
で、定期的に再起動するようなオプションあるよね。
0030232006/06/13(火) 22:26:21ID:???
>>26
当然そういうことだが。
言葉がうわすべりしてないか?
mod_perlでリバースプロキシ使うのは、
1.mod_perlでApacheが太り、静的サービスの反応が鈍る。
2.解決策として静的サービスには別のApacheを使う。
こういうことなんだが。

何も別マシンにリバースプロキシかけなくても静的サービスのスピード向上はできるよ。
0031nobodyさん2006/06/13(火) 22:27:36ID:???
>>30
別マシンとはひとことも言っていませんね。
0032232006/06/13(火) 22:28:56ID:???
>>29
> メモリの使用量でなく、プロセスの数を調整する。
> で、定期的に再起動するようなオプションあるよね。

面白いこと言うな。
プロセスの数は調整できんよ。
ある回数起動したらプロセス死ぬ設定はできるが、プロセスの数は運まかせになるよ。
0033nobodyさん2006/06/13(火) 22:33:31ID:???
>>31
いいわけかっこ悪い。
0034nobodyさん2006/06/13(火) 22:34:30ID:???
http://d.hatena.ne.jp/babie/20060201/p3
0035nobodyさん2006/06/13(火) 22:35:32ID:???
>>33
どこらへんがいいわけなのだろう。
0036nobodyさん2006/06/13(火) 22:37:57ID:???
>>34
で君はそのページをまねて、実際にどれくらい節約できた?
0037nobodyさん2006/06/13(火) 22:41:06ID:???
>>35
(・∀・)ニヤニヤ
0038nobodyさんNGNG
(´;ω;`)
0039nobodyさん2006/06/13(火) 22:47:05ID:???
(´・ω・`)
0040nobodyさん2006/06/13(火) 22:49:19ID:???
>>34
http://d.hatena.ne.jp/babie/20060201/p3
何やこれ。
1.Apacheが太るので子プロセスの数を制限する。
2.静的コンテンツのスピード確保にリバースプロキシを使う。
3.Apache自体をできるだけ太らせない。
当たり前のことやんか。
何も新しいものあらへん。
0041402006/06/13(火) 22:50:40ID:???
というか、これではやはりSpeedyCGI以下。
0042nobodyさん2006/06/13(火) 22:52:30ID:???
>>41
どれでは?
0043nobodyさん2006/06/13(火) 22:55:14ID:???
mod_perl使いたきゃ、
専用の鯖がいるってことでそ。
0044nobodyさん2006/06/13(火) 22:57:03ID:???
>>34
http://d.hatena.ne.jp/babie/20060201/p3
>テスト機で試した。MaxClients 調整前はめっさ重くなる(SSHまで!)。
>MaxClients 調整後はなんとか耐えられる。

なんとか耐えられるんだってよ。
0045nobodyさん2006/06/13(火) 22:57:10ID:???
>>43
?
0046nobodyさんNGNG
mod_perl厨
必死すぎ
ワロタ
0047nobodyさん2006/06/13(火) 22:58:02ID:???
静的なもんも、動的なもんも、とりあえず一台でさばけて、
なおかつcgiも速くなるってのはどれ?
0048nobodyさん2006/06/13(火) 22:58:52ID:???
>>47
規模を書かないと話にならないのでは?
0049nobodyさん2006/06/13(火) 23:00:58ID:???
>>48
規模によってmod_perlがSpeedyCGIを上回ることがあんの?
0050nobodyさん2006/06/13(火) 23:03:30ID:???
>>48
規模が大きいほどmod_perl不利。
セッション数を捌けない。
規模が小さくてもやはり不利。
無用にApacheが圧迫されている。
0051nobodyさん2006/06/13(火) 23:06:35ID:???
FastCGIって、mod_perlやSpeedyCGIに比べるとどんなん?
0052nobodyさん2006/06/13(火) 23:21:03ID:???
優秀。
SpeedyCGI同様にプロセス数を自由に設定できる。
Apacheと別プロセスなので、それによってApacheのMaxClientsが制限を受けない。

1.SpeedyCGIは導入は容易。
Perl内部の問題で終わらせられる。
必要ならApacheモジュールもある。

2.FastCGIはアプリ起動用スクリプトと、Apacheの設定が必要。
ただし、ほぼ言語を問わず使用できるので、言語が混在しているサイトには有利。
最近lighttpdとの組み合わせが一部で人気?

スピードはどれも意味のある差はない。
0053nobodyさん2006/06/13(火) 23:23:19ID:???
http://www.dmst.aueb.gr/dds/pubs/conf/2002-SANE-DynCont/html/dyncont.html
0054522006/06/13(火) 23:26:56ID:???
mod_perlは
1.メモリの管理が非常に下手。
2.導入時にmod_perl独自の制限がある。
(カレントDirがPerlとは違う。使えない文法がある)

以上の点でSpeedyCGI、FastCGIに比べ劣るが、逆に有利な点は不明。
0055nobodyさん2006/06/13(火) 23:28:50ID:???
FastCGI安定してるなぁ。
応用も利きそうなのでいい感じかも
0056nobodyさん2006/06/13(火) 23:30:20ID:???
>>53
古くね?
0057nobodyさん2006/06/13(火) 23:30:47ID:???
なんかものすごい自演だらけの予感。
0058522006/06/13(火) 23:31:48ID:???
>>53
ベンチはそれほど意味がないよ。
引用先も、対象ベンチ次第でで結果がころころ変わっている。
しかし、mod_perlはベンチでも負けている記事が目立つ。
0059nobodyさん2006/06/13(火) 23:33:48ID:???
>>57
同意。
0060nobodyさん2006/06/13(火) 23:37:01ID:???
mod_perl って 3 系統くらいあった気がするけど、だれか違いを説明きぼん。
0061nobodyさん2006/06/13(火) 23:38:41ID:???
このスレの住人ってなぜにmod_perlにしがみつくの?
mod_perlは一体どこがアドバンテージ?
0062nobodyさん2006/06/13(火) 23:39:34ID:???
なにをもって「mod_perlにしがみつく」ということにしたいのだろう。
0063nobodyさん2006/06/13(火) 23:40:50ID:???
>>62
(・∀・)
0064nobodyさん2006/06/13(火) 23:42:15ID:???
>>62
(・∀・)ニヤニヤ
0065nobodyさんNGNG
出来損ないには愛着が沸くもの
0066nobodyさん2006/06/13(火) 23:44:02ID:???
もうmod_perl専用スレじゃないのにね。
0067nobodyさん2006/06/14(水) 00:04:43ID:???
C/FastCGIとPerl/FastCGIってどのくらい速度が違うか実践した方います?
Cの方が早いだろうけどインタープリタ部分のコストを除いた純粋な言語の速度対決なら
C/CGI vs Perl/CGIほどの差は出ないと思うのですが実際のところどのぐらい違うでしょうか。
0068nobodyさん2006/06/14(水) 00:05:10ID:???
> mod_perlは一体どこがアドバンテージ?

必死だが、答えられないmod_perl厨は逝ってよし。
0069nobodyさん2006/06/14(水) 00:07:07ID:???
うーん、こうやって貼り付けたくなるほど出来損ないには愛着がわくなw
http://pc8.2ch.net/test/read.cgi/php/1149089424/2
0070nobodyさん2006/06/14(水) 00:12:22ID:???
>>67
試してないので机上の空論ですまそ。

Cはコンパイル時に非常に長い時間をかけて最適化を行うので、一瞬でコンパイルする必要があるPerlコンパイラとはやはり根本的な差があると思う。
そうでなければ、Cが今だに強い理由はないと思う。
しかし、大きく差が詰まるのは間違いないよね。
0071nobodyさん2006/06/14(水) 00:14:07ID:???
>> そうでなければ、Cが今だに強い理由はないと思う。

Web アプリの分野で?w
0072nobodyさん2006/06/14(水) 00:15:49ID:???
>>72
まさか。
速度が必要な分野で。
OS、DB、科学技術計算。
0073nobodyさん2006/06/14(水) 00:17:39ID:???
↑
>>71
0074nobodyさん2006/06/14(水) 00:46:51ID:???
>>67
Win上で同じくネイティブコードを吐く、VBとCの速度差にビビった経験があるな。
.NETでは言語間の速度差はほぼ無いようだが。
0075nobodyさん2006/06/14(水) 01:56:44ID:???
本格的に大規模なサイトだと、重い処理はCで書いて、それをPerlやPHPから使うって言うのが解決策になってるんじゃないかな。
ヤフーとかもそうでしょう。
0076nobodyさん2006/06/14(水) 02:11:38ID:???
まぁ各ファイルで共通の手続きはできるだけモジュールに括り出すんだな。
■ このスレッドは過去ログ倉庫に格納されています