• ベストアンサー

mod_perlとFastCGIではどちらのが処理スピードがあがるので

mod_perlとFastCGIではどちらのが処理スピードがあがるのでしょうか? 処理速度をあげたくて困っています。 調べているとmod_perl(+mod_proxy?)とFastCGIというのがわかったのですが、実際どちらの方が早いとかあるのでしょうか?(もちろん環境にもよると思いますが) 何か参考になるURLだけでも構いませんのでよろしくお願い致します。

  • CGI
  • 回答数2
  • ありがとう数15

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

CGI > FastCGI > mod_perlの順にCPU負荷が上がり、 CGI < FastCGI < mod_perlの順にメモリ負荷が上がることは説明するまでもないですよね? プロクシ(キャッシュファイル)でうまくいくなら、 キャッシュコントロールを利用してクライアントのHDDに保存されたキャッシュを読んで貰うようにするとか、 304 not modifiedを返すだけにするとか、CGI/mod_perlを可能な限り動かさないような仕組みにする方が良いのでは? もちろんユニークユーザーが多い場合はこの限りではありませんが。

その他の回答 (1)

回答No.1

一番早いのはmod_perlです。 仕組みとしては、こういう感じです。 通常のCGI (1) perl(Windowsではperl.exeという名前のアプリケーション)を起動する (2) 指定された.cgiファイルを読み込む (3) その処理結果を出力する FastCGIはperl(perl.exe)を実行中のままで待機させておき (1) 指定された.cgiファイルを読み込む (2) その処理結果を出力する mod_perlは perl(perl.exe)を実行中、指定された.cgiファイルを読み込んで変数などを初期化させた状態で待機させておき (1) その処理結果を出力する FastCGIやmod_perlは 実行中のまま、.cgiファイルを読み込んだ状態で、待機させますので、メモリを使用し続けます。 mod_perlは実行権限が違う(Apacheの実行権限で動作する)ので、 スピードだけで判断はできないと思います。 レンタルサーバーでは、通常はFastCGIが使われていると思います。 mod_proxyは使ったことがありませんが、 Apacheにプロクシサーバーの役目を行わせるものだと思いますので、CGI/mod_perlは関係ないのでは?

keeeeeeeen
質問者

お礼

実はmode_perlは使っているのですが、負荷分散がうまくいってないようで(mode_perlを入れていないため?)メモリがきつきつになっているので、実際fastcgiに変更した方がいいのかなと思って質問させていただきました。 mode_perlにしろ、FastCGIにしろ毎回呼び出すものを呼び出した状態にしていてメモリーがたまるのは知っていたのですが、mode_proxyなんかとあわせるとうまくいくようなので…http://ynomura.dip.jp/archives/2007/10/mod_proxymod_pe.html 回答ありがとうございます。

関連するQ&A

  • Mod_Perlについて

    こんばんは。Perlのほうとどちらに書き込むべきか迷ったのですが、こちらに・・・。 PerlでのCGIでシステム屋さんにあるシステムを作ってもらい運営を開始しました。 サーバー会社は海外のものを使っているのですが、メールやチャットでカスタマー・サービスとやり取りしているとMod_PerlとFast_CGIを使えば負荷が軽くなるから、必要なら無料でインストールしてあげるよ、と言ってくれています。 私はプログラマーでなく、あくまでビジネス側の人間なので、Mod_Perl、Fast_CGIと言われてもピンと来ないので調べて見ると Mod_Perlは CGIの負荷を減らし、スピードを速めるとありました。 また、その他の色々な説明を以下のページで 読みました。 http://d.hatena.ne.jp/keyword/mod_perl が、私にはあまりピンと来ません。 色々書かれていますが、サーバー会社が言うように、 Mod_Perlをサーバーにインストールして今用いているPerlで書かれたCGIプログラムをそのままMod_Perlに乗せたらいいだけなのでしょうか? それともシステム屋さんにもう一度連絡を取り、プログラム自体をいじらないといけない事もあるのでしょうか? またFast_CGIって何でしょうか? (こちらは検索してもいまひとつ分かりやすい説明が見つかりませんでした) 答えられる範囲だけでよいので回答頂けますと助かります。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • mod_perlとperlのソースについて

    mod_perlの方がperlより早いとい書いてあるサイトはやまほどありますが、いったいソースは何が違うのかさっぱりわかりません。実際に何%程度異なるのもわからないので、困っています。 mod_perl本というのはなさそうなので、 perlとmod_perlのソースの違いがわかるサイトや本はあるのでしょうか?

  • WindowsXPでSpeedyCGIか、FastCGIを使いたい場合。

    余っていたパソコン OS:WindowsXP CPU:750MHz memory:640MB にapache1.3.37をインストールしてあります。公開1年半ほど経過した現時点で、徐々にCPUの限界を感じ始めています。早めに対策しなければと検索で調べてみましたところ、SpeedyCGIと、FastCGIが良さそうでした。SpeedyCGIでは大抵のperlスクリプトが動くそうですが、Windowsでは動かせなさそうな感じですが、実際のところどうなのでしょうか? FastCGIならWindowsサーバでも使えるとの情報が見つかりましたが、配布されているperlのほとんどがそのままでは動かないそうです。 また、windows環境での詳しいインストール方法を解説しているサイトを探すことができませんでした。 FastCGI(出来ればSpeedyCGI)をWindowsにインストールするには、apache1.3系よりも、apache2系の方がよいのでしょうか?また、インストールするのに参考になるサイトを紹介していただければ幸いです。

    • ベストアンサー
    • Perl
  • apache/mod_perlの実行エラーについて

    apacheについて質問です。分かる方、どうぞご教授下さい。 httpd.confにmod_perlの設定を記述しない場合、通常どおりapacheが起動するのですが、以下のようにmod_perlの設定を追記するとapacheがエラーで起動しません。 【mod_perlの設定】 PerlModule ModPerl::Registry PerlRequire /usr/lib/perl5/site_perl/5.8.8/startup.pl <Location /cgi-bin> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlSendHeader On Options ExecCGI </Location> 【apacheのエラー内容】 /usr/local/apache2/bin/httpd: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner httpd.confのmod_perlの設定については、他のサーバーでは問題なく起動していますので、mod_perlのconfigure時の共有ライブラリの設定に不備があるのではと思っているのですがどう設定すればいいのか分かりません。mod_perlのconfigure時のオプションは以下のようになっています。 【mod_perlのconfigure】 perl Makefile.PL \ > MP_USE_STATIC=1 \ > MP_AP_PREFIX=../httpd-2.0.63 \ > MP_AP_CONFIGURE="--prefix=/usr/local/apache2 --with-mpm=prefork" 以下、grep の実行結果です。 [root@colinux mod_perl-2.0.3]# grep -r ap_get_server_banner /usr/lib/* バイナリー・ファイル/usr/lib/httpd/modules/mod_rewrite.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_connect.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_ftp.soは一致しました どんな些細なことでも結構ですので、どうかご教授のほど宜しくお願い致します。 【環境】 fedora6 apache2.0.63 mod_perl2.0.4

  • MOD_PERL2.0の起動の仕方について

    以下のキーワードをDOS窓で入力して ppm install http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd mod_perl.so(Mod_perlモジュール)をインストールしました。 そして、httpd.confに以下のコマンドを追加して、extra.plをhttpd.confと同じフォルダに置き ##Mod_perl## LoadFile "C:/usr/local/bin/perl58.dll" LoadModule perl_module modules/mod_perl.so PerlRequire "C:/Program Files/Apache2/conf/extra.pl" #Alias /perl/ "/Apache2/perl/" <Location /perl> SetHandler perl-script PerlResponseHandler ModPerl::Registry Options +ExecCGI PerlOptions +ParseHeaders </Location> ##Mod_perl## Apacheを起動してもDOS窓は、画面に何もコメントを表示しないまま閉じてしまいます。 Mod_perlモジュールをインストールしてから、Apacheを起動するには一体どの様にすれば 宜しいかどうか教えて下さい。 ちなみに私は以下URLを参照しました。 ホームサーバの構成 http://eazyfox.homelinux.org/etc/serverspec.htm Mod_perl2.0のWin32の説明 http://perl.apache.org/docs/2.0/os/win32/config.html extra.plの内容も上の両ページに書かれている内容を埋め込んでやってみましたがどちらも結果は同様です。 どうかご教授宜しくお願いします。

    • ベストアンサー
    • Perl
  • mod_perlのキャッシングに関して

    現在RedhatLinuxでapache+mod_perlを動かしています。 自作のモジュールXXXX.pmを使用した(useにて)CGIを動かしているのですが、XXXX.pmに変更を加えても、それが反映されません。 Apache::Registoryを設定しているのですが、.cgiはうまく再コンパイルされているようなのですが、.pmを使用するとうまくいきません。ディレクトリは同一です。 mod_perlのキャッシングのせいだと思うのですが、回避の方法がご存知の方がいましたら教えて下さい。

  • mod_perlのキャッシュについて

    はじめまして、isi0033と言います。 下記のご回答宜しくお願い致します。 現在、レンタルサーバを借りてapache,mod_perlでシステムを構築しているのですが、潜在的なバグをもったプログラムにアクセスし、一度でも、ブラウザに『Internal Server Error』を表示されると、それがキャッシュとして残ってしまい、プログラムのバグを修正しても、『Internal Server Error』が表示されたりします。 何度かリロードすると正しく表示されるのですが、 とても安心して公開できません。 レンタルサーバでは、Apache::Registryが使われているようで、mod_perlについて色々調べると、Perlプログラムを読込んでコンパイルしたものをメモリにキャッシュするとありました。 このメモリをいったんクリアする設定or方法等、ご存知の人がいましたら、教えてください。

    • ベストアンサー
    • Perl
  • mod_rewrite について

    MVC モデルで web app を作る場合、mod_rewrite で url を「書き換え」て、1つのソースコードですべてのアクセスを処理する、 みたいなことはよくやられると思うのですが、 巷の情報を漁ってみると、 「mod_rewrite では post で渡されたパラメタを取得できない」 とのことでした。 でもこれって、リダイレクトした場合に、そうなることがありえるって話ですよね? mod_rewrite って、url を「書き換え」てるだけじゃないんでしょうか? url を書き換えて、リダイレクトまでされているんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Perlの処理について

    Perlの処理について分からない事があります。 ご存知の方アドバイスを頂けますよう よろしくお願い致します。 (分からない処理内容) 下記処理内容で、$hensuがどういう時に &errs()をコールするのか分かりません。 アドバイスを頂けますよう よろしくお願い致します。 $hensuは、変数です。 &errs()は、個別で作成した関数です。 $Errorpathは、Errorファイル名です。 ( $hensu !~ /^( | |\\n)*$/ ) || ( &errs( 11, $Errorpath ) and exit );

    • ベストアンサー
    • Perl
  • マイクラのmodについて

    マイクラのmodで「アイテムの名前を自動で変えてくれるmod」 の1.12のバージョンがあれば教えてください。 (サバイバルでAE2で自動化する時に自分でレシピを登録するのですが、 魔術modなどで作った瞬間消滅するものや、 工業modで3つ以上できるものがあるのですが、 この方(お花と魔術と工業のマインクラフト85話(←ある実況者さんの動画) の動画を参考するとアイテムが作られて、 倉庫内に入る、または強制的に処理を終わらせるまで 処理が終わらないので、仮でアイテムの名前を変えたものを、 倉庫内に入れて処理を終わらせよう と思っているのですが、 最初で述べたmodが自分ではなかなか見つかりませんでした。)

専門家に質問してみよう