トップページ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/

ー二三ヘ( ゚∀゚)ノ
0161nobodyさん2006/06/16(金) 22:58:30ID:???
だな。w
0162nobodyさん2006/06/16(金) 22:59:18ID:???
>>160
んだな。
宗教の自由ってやつだ。
0163nobodyさん2006/06/16(金) 23:00:45ID:???
そんな宗教もあるのか。
0164nobodyさん2006/06/16(金) 23:02:01ID:???
まあほとんど宗教だわな。
0165nobodyさん2006/06/16(金) 23:02:50ID:???
宗教に、ほとんどとか程度があるのか。
このスレすごいなー。w
0166nobodyさん2006/06/16(金) 23:04:07ID:???
>>165
マジレスすんなよ。
おもろないやつ。
0167nobodyさん2006/06/16(金) 23:05:16ID:???
マジレスっておいしいの?
0168nobodyさん2006/06/16(金) 23:14:23ID:???
ここまで俺の自演
0169nobodyさん2006/06/16(金) 23:15:31ID:???
いや、俺の自演だよ。
0170nobodyさん2006/06/16(金) 23:31:31ID:???
mod_perl と SpeedyCGI どっちがいいの?
0171nobodyさん2006/06/16(金) 23:35:07ID:???
>>170
mod_perl以外クソに決まってるだろ!
0172nobodyさん2006/06/16(金) 23:36:35ID:???
>>171
マジレスすんなよ。
おもろないやつ。
0173nobodyさん2006/06/16(金) 23:38:52ID:???
>>170
mod_perl以外を選ぶメリットは何もない。
0174nobodyさん2006/06/16(金) 23:41:09ID:???
>>172
そのまま返す。
コピペだし。
0175nobodyさん2006/06/16(金) 23:41:20ID:???
>>171 さん >>173 さん、ありがとうございます!
0176nobodyさん2006/06/16(金) 23:43:17ID:???
>>175
わかってるようだな。
世界で一番優れた言語mod_perl!
0177nobodyさん2006/06/16(金) 23:45:16ID:???
>>176
mod_perl って言語だったんですね!
明日早速会社のサーバに mod_perl 言語を入れて実稼働はじめます!
0178nobodyさん2006/06/16(金) 23:46:13ID:???
>>175
いや、言語ではなく神だ。
まだまだだな。
0179nobodyさん2006/06/16(金) 23:48:01ID:???
>>177
神を汚れたサーバに入れるなどおそれおおい。
神棚に飾っておけ。
0180nobodyさん2006/06/16(金) 23:49:07ID:???
>>178-179
神などという抽象的な存在の話なら、板違いじゃないのかな。
0181nobodyさん2006/06/16(金) 23:53:19ID:???
つまらんこというな。
0182nobodyさん2006/06/16(金) 23:54:01ID:???
>>181
つまらんこというな。
0183nobodyさんNGNG
面白いと思ってるのが痛い
0184nobodyさん2006/06/16(金) 23:56:18ID:???
痛いと思ってるのが面白い
0185nobodyさん2006/06/16(金) 23:56:23ID:???
このスレは脱線かバトル以外話題がないからな。
そんときだけ異様にのびる。
0186nobodyさん2006/06/16(金) 23:57:03ID:???
> そんときだけ異様にのびる。

だって全部おれの自演だし
0187nobodyさん2006/06/16(金) 23:58:02ID:???
俺の自演だって言ってるだろ。
0188nobodyさん2006/06/17(土) 00:01:32ID:???
まあ、誰が何を主張しようと、言論の自由だもんね!
0189nobodyさんNGNG
もっと有益な話をしてくれ
0190nobodyさん2006/06/17(土) 00:11:32ID:???
煽り耐性なさ杉w
0191nobodyさんNGNG
SpeedyCGIってlighttpdでも使えるん?
今実行できる環境にないので
0192nobodyさん2006/06/17(土) 00:16:56ID:???
> SpeedyCGIってlighttpdでも使えるん?

使えないということにでもしたい?
0193nobodyさんNGNG
ほぇ?
0194nobodyさん2006/06/17(土) 00:23:38ID:???
> SpeedyCGIってlighttpdでも使えるん?
使えるよ。
Perlで完結するので、webサーバーは問わない。
0195nobodyさんNGNG
>>194
ありがとう
バックエンドとか云うのは最初起動させとかなくていいの?
shebang行をspeedyに変えるだけでいいの?
0196nobodyさん2006/06/17(土) 00:25:51ID:???
> Perlで完結するので、webサーバーは問わない。

デマですね。
/usr/bin/speedy は perl なのかと。
01971942006/06/17(土) 00:27:22ID:???
ただし、ActivePerlの場合は俺は知らん。
PC-UnixでPerlCGIが使えれば問題ない。
SpeedyCGIが入れられないとかいうなら別だが。
0198nobodyさん2006/06/17(土) 00:29:35ID:???
> Perlで完結するので、webサーバーは問わない。



> ただし、ActivePerlの場合は俺は知らん。
> PC-UnixでPerlCGIが使えれば問題ない。
> SpeedyCGIが入れられないとかいうなら別だが。

とでは、異なる内容になっていますね。
01991942006/06/17(土) 00:35:58ID:???
>>195
> バックエンドとか云うのは最初起動させとかなくていいの?
> shebang行をspeedyに変えるだけでいいの?
変えるだけでOK。
最初に実行した時に勝手にインタプリタが常駐しネイティブコードもキャッシュされるよ。
ただし、デフォルト設定では1時間Callがなければ、すべて解放されてしまうので自分の環境に合わせてコマンドラインスイッチを。
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod


>>196
> /usr/bin/speedy は perl なのかと。
CPANでインストールできるし、Perlドキュメントにも載ってますが...?
Perlの公式リリースと思っても間違いではないはず。
0200nobodyさん2006/06/17(土) 00:39:12ID:???
> CPANでインストールできるし、Perlドキュメントにも載ってますが...?
> Perlの公式リリースと思っても間違いではないはず。

CPAN に登録されていることと、Perl の公式リリースは何ら関係がありませんね。
そもそも「Perlの公式リリース」とは、具体的に何ですか?
0201nobodyさんNGNG
凄い
ありがとう
環境が整ったらコンパイルしてみます
02021942006/06/17(土) 00:39:46ID:???
>>198
こだわるね。
正確に言えば、ActivePerlの場合は俺は知らんが、それ以外ならPerlで完結してるよ。
これでいいんだべか?
02031942006/06/17(土) 00:40:54ID:???
しつこい人は苦手でね。
疑うなら、自分でどうぞ。
0204nobodyさん2006/06/17(土) 00:41:21ID:???
> 正確に言えば、ActivePerlの場合は俺は知らんが、それ以外ならPerlで完結してるよ。

バックエンドプロセスへ通信するために起動される実行ファイルは
Perl なのかと。
0205nobodyさん2006/06/17(土) 00:42:30ID:???
デマばかり流している >>194 氏がかわいそうなので、
間違いを指摘するのは、このくらいでやめてあげてください。
02061942006/06/17(土) 00:44:43ID:???
お好きにどうぞ。
0207nobodyさん2006/06/17(土) 00:45:18ID:???
間違いを認めないのは、みっともないねぇ。
02081942006/06/17(土) 00:47:06ID:???
何とでもお好きなように。
0209nobodyさん2006/06/17(土) 00:50:36ID:???
>>204
> バックエンドプロセスへ通信するために起動される実行ファイルは
> Perl なのかと。

つ、SpeedyCGIのバックエンドはwebサーバーと無関係。
0210nobodyさん2006/06/17(土) 00:56:47ID:???
>>209
> > バックエンドプロセスへ通信するために起動される実行ファイルは
> > Perl なのかと。

は、

>>198
> Perlで完結するので、webサーバーは問わない。

に関しての発言ですね。

> つ、SpeedyCGIのバックエンドはwebサーバーと無関係。

shebang を speedy の変更した場合、
httpd から perl 以外のバイナリが呼び出されて SpeedyCGI の
バックエンドプロセスとやりとりをするわけだから、

> Perlで完結

ということにはならない。
0211nobodyさん2006/06/17(土) 01:03:48ID:???
>>210
まあ理屈ではなんとでも言えるよな。
誰もそんなことに関心はないわけだが。
0212nobodyさん2006/06/17(土) 01:05:09ID:???
>>211
> 誰もそんなことに関心はない

という思考をしていると思われる人が、
何で >>211 のような記述をしてるのか謎ですね。
0213nobodyさん2006/06/17(土) 01:05:55ID:???
???
0214nobodyさん2006/06/17(土) 01:09:13ID:???
>>210
ほとんどカラミ癖だなw
0215nobodyさん2006/06/17(土) 01:09:20ID:???
as you like
0216nobodyさんNGNG
> shebang を speedy の変更した場合、
日本語でおk
0217nobodyさん2006/06/17(土) 03:46:46ID:v+LZ4Y9O
このスレッドも高速化されてますね。
0218nobodyさん2006/06/17(土) 04:07:05ID:???
speedyCGI試してみたけど、確かに速いね。

最初、dagのrpmを入れてみたけど、mod_speedycgiが入っていないのでsourceから起こしてみた。
手始めにhello worldを表示するだけのスクリプトで試すと、通常のCGIと、CGI版speedyCGIは
大差が無かったが、mod_speedycgiだと5倍程度のスピードが出た。
次に、上記hello worldにuse CGI; use DBI を付けてみたら、CGI版speedyCGIは、10〜20倍程度、
mod_s;peedycgiだと、100〜150倍程度のスピードになった。

ちなみに、PHP5.0.4でhello worldを出力すると、mod_speedycgiより、2割位遅い感じ。
PEAR DBをrequireすると、use CGI; use DBIしたCGI版speedyCGIと同程度のスピード。

普通のCGIや、PHP使うのが馬鹿らしくなってきた。
0219nobodyさん2006/06/17(土) 09:36:53ID:???
>>218
マジ?
http://tbox.jpn.org/wiki/linuzau/wiki.cgi?LinuxZaurus%B8%FE%A4%B1%A5%D3%A5%EB%A5%C9%2FApache%2BSpeedyCGI#i5
ここマシンがリナザウだけどノーマルSpeedyCGIよりかなりベンチが落ちてたんだけど。
自分でも使ったが、自分の場合は体感差はなかった。
Apacheの設定はほとんど無いに近いが。
0220nobodyさん2006/06/17(土) 09:43:47ID:???
日本語でおk
0221nobodyさん2006/06/17(土) 09:49:36ID:???
>>218
> 通常のCGIと、CGI版speedyCGIは大差が無かった

CGI版SpeedyCGIで鯖運用してるが、通常のCGIから劇的に速くなったよ。
どこもそういうことになってるみたいだが。
CGI版SpeedyCGIは1発目の動作は
インタープリタ起動→常駐→コンパイル→キャッシュ→実行
となるから、遅い。
次回からは
最初の4ステップがなくなり実行のみになるので、急激に速度が向上する。

2回以上実行した?
0222nobodyさん2006/06/17(土) 11:17:34ID:???
>>219
自分でも信じられなかったので、2台のマシン(Opteron ?GHz CentOS4.3とPen2 200MHz RH9)
で試したけど、同じような傾向が出た。
ザウルスのサイトも見ているんだけど、本当にmod_speedycgiで動かしているのかなという
気がしている。お恥ずかしながら、私も最初、大差無しの結果を出していたが、原因は、
LoadModuleをしただけで、cgi-binの下でcgiとして動かしてしまっていた事。マニュアルにある
様に、ディレクトリ切って、SetHandlerしたら、桁が上がった。

#!/usr/bin/speedy
use CGI;
use DBI;

print << "EOT";
Conent-Type: text/html

<html>
<head>
<title>test speedy</title>
</head>
<body>
Hello World
</body>
</html>
EOT

を、遅いマシンの方で、ab -n 10 http://localhost/speedy/test3.scgi みたいな事を今やったら、
CGI 1726.281 [ms]
SpeedyCGI(CGI版): 44.240 [ms]
mod_speedycgi: 10.990 [ms]
てな感じになりました。(Time per requestの値)
0223nobodyさんNGNG
shebangをspeedyに変えても
ApacheでSuExecは有効になるんですかね?
0224nobodyさん2006/06/17(土) 11:24:38ID:???
>>223
実際にはやってないのですまそ。
SpeedyCGIはSuExecはOKだったはず。
02252212006/06/17(土) 11:29:26ID:???
ソースは
http://rintaro.dip.jp/program/nicky/index.html
ここを参考に作ったSpeedyCGI版nicky.cgi

ベンチ
ab -n 100 -c 10

     CGI   SpeedyCGI mod_speedycgi mod_perl
1回目  0.54    6.12    74.24    6.93
2回目  0.54    6.38    74.24    7.16
3回目  0.54    6.41    72.25    7.09
4回目  0.53    6.41    73.86    7.15
5回目  0.54    6.45    74.46    7.19

平均   0.538   6.354    73.81    7.104

あり得ない...
速い...

アパッチモジュール版SpeedyCGI最強。
>218は発見者
誰もmod_speedycgiは無視してたからな。
0226nobodyさん2006/06/17(土) 11:39:03ID:???
>>221
上記のスクリプトから、use CGI; use DBI;を抜くと、

CGI: 49.640 [ms]
SpeedyCGI(CGI版): 43.361 [ms]
mod_speedycgi: 10.968 [ms]

という結果。
スクリプトの中身がほとんど無い状態だと、スピードに差が出なかった。
意味のあるスクリプトは、当然、ぐっと長くなるので、SpeedyCGI(CGI版)でも、劇的に
速くなったと感じられる筈。use CGI; use DBI;しただけで、150倍以上の差が出るので、
3桁の差が出る事も十分あり得そう。(普通のCGIが遅すぎるんだけど)
ちなみに、SpeedyCGIについては、2回立て続けにabし、2回目の結果を書いてます。

自分でも、速くなっている様だけど、???な所がある結果なので、追試して貰えれば、
何よりです。
0227nobodyさんNGNG
おぉ凄い
02282252006/06/17(土) 11:49:50ID:???
>>226
確かに信じがたいよね。
検証します。
0229218,222,2262006/06/17(土) 11:59:40ID:???
>>225
追試ありがとうございます。しかも、mod_perl付き。(^^)

それにしても、mod_speedycgi速いですね。

> 誰もmod_speedycgiは無視してたからな。

 私は、一昨日あたりから真面目に調べ出したんで詳しくないんだけど、何でmod_speedycgi
は無視されてたんでしょうか?
あと、FastCGIは、speedyCGIよりも速度的に有利みたいな記述を見かけるけど、比較対象は
speedyCGI(CGI版)なんでしょうか?

 これなら、Catalystを試してみても良いかなという気がして来た。
0230nobodyさん2006/06/17(土) 12:47:40ID:???
とりあえず。
FastCGI:CGI一般
mod_perl, speedyCGI:perl用
って考えでok?


0231nobodyさん2006/06/17(土) 13:09:03ID:???
> >218は発見者
> 誰もmod_speedycgiは無視してたからな。

アメリカ大陸を発見したような話か?
02322252006/06/17(土) 13:40:36ID:???
追試結果。
ぬかよろこびさせてすまそ。

>225の異常な高スコアはただのファイルとしてアクセスされていたためです。

修正後のベンチです。

      CGI  SpeedyCGI  mod_speedycgi mod_perl
1回目   0.45    5.89    7.36    6.35
2回目   0.45    6.06    7.36    6.34
3回目   0.44    6.05    7.37    6.38
4回目   0.45    6.03    7.18    6.4
5回目   0.44    5.92    7.39    6.12

平均    0.446   5.99    7.332    6.318
(Requests per second)

お騒がせして申し訳ない。
0233nobodyさんNGNG
SpeedyCGI単体でも十分速いな
0234nobodyさん2006/06/17(土) 13:52:48ID:???
print するだけって、とても無意味なベンチですね。
0235nobodyさん2006/06/17(土) 13:57:30ID:???
完璧なベンチ希望。
02362252006/06/17(土) 13:59:41ID:???
俺は貴重な時間を割いたので、これ以上はゴメンです。
完璧ではないのは確かですが。
完璧なベンチは難しい。
0237nobodyさん2006/06/17(土) 14:00:00ID:???
まずは「完璧なベンチ」の要件から定義していかないとね。
02382182006/06/17(土) 14:31:37ID:???
>>232

お騒がせしました。

そうすると、mod_speedycgiは確かに速いけど、実際のアプリではファイルやDBへの
アクセスがあるから、speedyCGI(CGI版)との速度差はほとんど無くなると言う事の様
ですね。(ほとんどがオンメモリーで済む処理だと差が出るけど)

ちなみに、テストに使った Hello world をhtmlにして同じサーバに入れてベンチ取った
所、4.298 [ms]でした。
mod_speedycgiは、10.968 [ms] だったので、この2.5倍程度しか掛かっていない、という
事は、ぼちぼち限界。

アクセラレータとして、mod_perl,FastCGI,SpeedyCGIの比較で、>>52

「スピードはどれも意味のある差はない。」

は、正論だったんだなと再認識しました。
0239nobodyさん2006/06/17(土) 14:32:11ID:???
じゃあ、無意味じゃないベンチでいいよ。
0240nobodyさん2006/06/17(土) 14:37:42ID:???
>>239
例えばどんな条件?
0241nobodyさん2006/06/17(土) 15:20:32ID:???
>>225
そのmod_perlはまさかpreforkじゃあるめぇな?是非workerでのベンチも宜しく。
02422252006/06/17(土) 15:37:55ID:???
>>241
> そのmod_perlはまさかpreforkじゃあるめぇな?是非workerでのベンチも宜しく。

まさかのpreforkだよ。
Apache1.3.33なのでworkerは使えないはず。
ボランティアではないから、Apache2インスコは勘弁してくれ。
02432252006/06/17(土) 15:40:36ID:???
まあ、時間ができた時にやってもいいな。
今日はもう時間がない。
無期限でというならやってもいいよ。
0244nobodyさん2006/06/17(土) 16:48:09ID:???
ほら、やっぱり飽和させないと>ベンチ
0245nobodyさん2006/06/17(土) 16:49:21ID:uEg75/Hh
いろいろ参考になります。ありがトン。
ところで、perlccでperlスクリプトをバイナリにしとくのって
cgiが速くなるのでしょうか。やってみればいいんでしょうけど。
0246nobodyさん2006/06/17(土) 17:42:44ID:PIdwd3B2
SpeedyCGIってWindowsでは動かないのか?
0247nobodyさん2006/06/17(土) 18:13:28ID:???
>>133の続きマダー?
0248nobodyさん2006/06/17(土) 19:57:24ID:???
http://www.drk7.jp/MT/archives/000863.html

によると、FastCGIは、Segmentation Fault に悩まされる事がある様だけど、
ぶち当たった事がある人いる?
0249nobodyさん2006/06/17(土) 23:26:08ID:???
なんかmod_perlというとmixiやhatenaが出てくるけど、
老舗/.もわるれないでほしいなぁ。
0250nobodyさん2006/06/18(日) 05:24:04ID:???
糞遅いcrc計算とかmd5計算とかどうよ
0251nobodyさん2006/06/18(日) 05:31:43ID:???
いやぁ、どうもこうもないですよ
0252nobodyさん2006/06/18(日) 08:57:02ID:???
>>234
>>235
>>239
同じWebサーバを使い、同じPerlインタプリタと同じコンパイル済みのコードをメモリ上に
常駐させて処理するんだから、その処理時間は、mod_perl,SpeedyCGI,FastCGIのどれも
掛かる時間は一緒。
せいぜい差が出るのは、起動の際の時間。
コードの量が増えれば、起動時間の差が占める割合が低くなるから、コードの規模が
大きくなるに従って、三者の差は無くなって行く。
凝ったコードでベンチを取っても、「CGIは遅いが、mod_perl,SpeedyCGI,FastCGIはほとんど
差が出ない」という結果が出るだけ。

だから、「最小限のコード」でベンチを取るのは正解。
ただ、処理時間の「差」を見るのは良いが、「比率」を見てしまうと、間違いの基。

あとは、メモリを喰いすぎてswapを起こして遅くならないかとか、マルチ*な環境を有効に
使えるかとか、一度に多くのリクエストが集中した時に、適切に捌けるかと言った比較を
するのは意味がある。
0253nobodyさん2006/06/18(日) 11:01:42ID:???
>>252
> あとは、メモリを喰いすぎてswapを起こして遅くならないかとか、
> マルチ*な環境を有効に使えるかとか、一度に多くのリクエストが
> 集中した時に、適切に捌けるかと言った比較をするのは意味がある。

よく意味がわかりません。
0254nobodyさん2006/06/18(日) 11:12:02ID:???
>>252
> だから、「最小限のコード」でベンチを取るのは正解。
そうかな、むりやり差を出すのが正解とは思わないが。

> あとは、メモリを喰いすぎてswapを起こして遅くならないかとか
mod_perlは自分に対してのswapは、許してないよ。
プロセスごとkillされる。
0255nobodyさん2006/06/20(火) 22:59:20ID:???
誰かPerlの本格的コンパイラ作らんかな。
できるはずなんだけど。
Basicのようにスクリプト、実行ファイル両立方式になればなあ。
一々グローバル変数初期化しなくてもよくなる。
スピードも上がる。

絵に描いた餅ですまそ。
0256nobodyさん2006/06/21(水) 02:12:20ID:???
妄想するのは構わないがリサーチもせんと書き込むな
0257nobodyさんNGNG
perlccってあんまりはやらんですよね。
02582552006/06/21(水) 10:21:51ID:???
確かに妄想なんだがリサーチしようがないだろう。
似たような事例にGCC-JAVAがあるのは知ってる。
これ、Javaソースからネイティブコードにコンパイルする。
でもJava自体にJITコンパイラがあるから、Javaでは無視されている。
GCC-PERLがあればなあ。
0259nobodyさん2006/06/21(水) 18:48:07ID:???
>リサーチしようがないだろう。
>リサーチしようがないだろう。
>リサーチしようがないだろう。

http://www.google.co.jp/search?hl=en&q=Perl+Compiler
0260nobodyさんNGNG
PARはPerlのDLL全部ぶち込んで
スクリプトをZIP圧縮してるだけだし
■ このスレッドは過去ログ倉庫に格納されています