PerlをwindowsXP(home)上でapahce2.2を搭載して使用しています。


その際に、外部ネットワークからのアクセスはなし、自分のPCでApacheを常駐させて
Perlプログラムを走らせるのみ、(外部サイトにアクセスするLWPモジュール等は使う)で、
最高のCGIスピードを出せる状態の設定例(httpd.conf)を教えてください。

環境は、
Windows XP SP2(Home)
Perl ver 5.8.8
LWP Version: 5.805
です。

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/04/17 15:41:38
  • 終了:2007/04/24 15:45:03

回答(2件)

id:ootatmt No.1

ootatmt回答回数1307ベストアンサー獲得回数652007/04/17 15:51:42

ポイント35pt

http://q.hatena.ne.jp/1176779133

こちらとの関連であれば、Apacheの設定はほとんど影響しませんよ。

外部サイトの応答待ちがほとんどでしょうから、perlプログラムのアルゴリズムで解決するしかないと思います(外部サイトへのアクセス順序とかアクセス間隔とか)。

id:zachouR

はい、そちらとの関連です。

そうですか、ほとんど影響なしですか、、、。

どうしても、止まってしまうんですよね、、、。

2007/04/17 16:17:26
id:wm5775 No.2

wm5775回答回数351ベストアンサー獲得回数42007/04/19 11:36:25

ポイント35pt

う~ん。mod_perlを使ったら?と回答したものです。

#大変恐縮ですが、質問ずばりの回答ではないです。

まず、やりたいことを再確認したいのですが、

  • これは後ほど外部からのアクセスを受けるプログラムを開発したいが、テストなので外部からのアクセスがない。

ということでしょうか?

それとも、

  • これは個人で使用する目的で開発しているソフトだから外部からのアクセスがない。

ということでしょうか?

もしくは、

  • 他人の作ったソフトなので、apache上でのCGIとして動作させざるを得ない。

ということでしょうか?

個人的に使用したいということであれば、やりたいことは、いわゆるスパイダーとかスクレイパーというプログラムを動作させたいということなんですかね?

#要するに、各サイトにあるデータをガサッと集めてきて、加工したものを表示したいということ。

その場合は、apacheは全く関係がないので、perlプログラムを単独で走らせた結果を静的なhtmlファイルとして吐き出し、ローカルでブラウザを使って閲覧すれば済むことだと思います。

最初の質問で、良く意味がわからなかったのですが、このCGIなりPerlが重いと感じるのは、相手のサーバのレスポンスをずっと待っているからじゃないでしょうか?

#つまり、マシンのパフォーマンスの問題ではないということです。

これをCGIとしてWebサーバに乗せたいという理由が、最終目標が外部に公開したいということになると話が別で、サーバーからのレスポンスが帰ってくるまでプロセスがずーと待っている状態で、アクセス数が増えると、サーバーからのレスポンス待ちプロセスが増加するので、当然サーバの負荷は大きくなります。

それを防ぐには、スレッドにしてサーバーにリクエストしてからレスポンスが帰ってくるまで、スレッドがスリープするようにしておけば、バンバンサーバーへのリクエストを発行しても、レスポンスが帰ってくるまでスレッドはスリープするので、ほかのプロセスを処理することができます。

特にCGIでmod_perlを使っていない場合には、cgiがコールされる度にperlインタプリタが起動し、スクリプトの解釈を行い、実行するので、非常に負担が大きくなります。

http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl.html

によると、少なくともmod_perlを使うと、

・cgiが呼ばれる度にperlのインタプリタが起動しない。

 →少なくとも最初に呼ばれたときのみ起動する。

・スクリプトがコンパイルされて、キャッシュされるのでスクリプトの解釈をするコストが省ける。

というメリットがあるわけですが、スレッド対応になるわけではありません。

Perlでマルチスレッドを使うには、

こんな感じに書き直すのがいいのではないでしょうか?

http://www.hyuki.com/dig/perlthread.html

#質問に対する直接の回答でなくてすみません。

id:zachouR

これは個人で使用する目的で開発しているソフトだから外部からのアクセスがない。

が現在おかれている状況です。

マルチスレッド、、、難しそうですね。

質問の文章がたらずにすいませんでした。

2007/04/19 14:50:14
  • id:zachouR
    質問が足りずにすいません、なにか状況に関する疑問点がありましたら、すぐにコメントいたします。
  • id:herolight
    ブラウザのFirefoxではいかがでしょうか
    IEより悪くなったり/利用できなかったらごめんなさい。
    http://www.mozilla-japan.org/products/firefox/

    ApacheではなくAN HTTPDを使ってみてはいかがでしょうか
    同じく変わらなかったり/利用できなかったらごめんなさい。
    http://www.st.rim.or.jp/~nakata/
  • id:zachouR
    ブラウザは、Firefoxを初め、スレープニール(あんまり関係ない)も試しました。やはり、一緒のようでした。

    PCの台数がけっこうあるので、Apache自体を変えるのはちょっと抵抗があります。
  • id:herolight
    そうでしたかどうもすみませんでした。
    回線速度がたりないかも?
  • id:zachouR
    はい、実はここまでやって速度が変わらないとなると、
    回線速度のような気がします。

    メモリーは一応増やしてみるつもりです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません