Perlについての質問です。


Apache2.2を利用して、あるPerlプログラムを走らせています。
そのプログラムは、LWP::UserAgentを利用して、数百サイトにアクセスするというプログラムです。

このプログラムを、IEで1つか2つ起動する分には大丈夫なのですが、3つ、4つ多重起動になると、途中で止まってしまいます。

この場合、もっとも高い原因はどの部分なのでしょうか?

僕はメモリー不足だと思うのですが、どうでしょうか?


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

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/04/17 12:05:34
  • 終了:2007/04/24 12:10:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/04/17 12:26:35

ポイント35pt

それだけでは何がどうなっているのか分かりませんので、

まずはタスクマネージャ等でCPU・メモリ使用量を確認するとよいと思います。

SOHO MIND » タスクマネージャでメモリを調査

id:zachouR

ありがとうございます、いったいどんな感じで質問すればいいのか、迷っています。

2007/04/17 14:34:28
id:wm5775 No.2

wm5775回答回数351ベストアンサー獲得回数42007/04/17 13:09:44

ポイント35pt

良い回答かわかりませんが、Perlで普通にそのようなプログラムを作ってしまうと、ブラウザからアクセスされるたびに新規プロセスが立ち上がってしまい、負荷が高くなるのだと思います。

ですから、単純にメモリを増やしても、アクセスされるブラウザというか、セッションの数が増えるとまた同じ問題が発生すると思います。

PerlのCGIをプロセスにしないためにはmod_perlなどをapacheに組み込むのだと思います。(その辺りはあまり詳しくないのですみません。)

通常はセッションに対して、プロセスではなく、スレッドを起動することで、質問にあったようなトラブルを回避するのが定石だと思います。

#ダミーURL

http://www.hatena.ne.jp

id:zachouR

ありがとうございます、

現在、mod_perlをインストールしようとしています。

2007/04/17 16:16:11
  • id:b-wind
    >いったいどんな感じで質問すればいいのか
    まずは実際に何が問題になっているかを知る方法を質問する。
    その上で分かった問題の解決方法を質問する。
    データの見方が分からないならそれも質問する。

    問題を小分けにして疑問点がはっきりしている方が回答が得られやすいです。
  • id:ootatmt
    Apacheがタイムアウトしてるんじゃないですか?
    タイムアウトの設定を延ばしてやれば止まることが少なくなると思います。
  • id:sato_hyper
    ダウンロードが2セッションまでの制限にひっかかってる可能性はありませんか?

    http://arena.nikkeibp.co.jp/tec/winxp/20040615/108844/
  • id:zachouR
    b-windさん
    すいません、次回より気をつけます。

    ootatmtさん
    タイムアウトは、かなり長めに設定しています。1800ぐらいです。

    sato hyperさん
    実は、PCが数台ありまして、一台目は4個までOK,2台目は3つ、3台目は2つと、同時起動できる数がバラバラなのです。
  • id:b-wind
    素直な疑問が一つ。
    そのプログラムはCGIでないとダメですか?
    外部に公開しているわけでもなさそうだしコマンドラインからデバッグメッセージを吐きつつ実行するようにした方が Apache の設定他の要素を省けて問題が分かりやすくなると思うんですが。
    CGIにするにしてもそれで問題点をはっきりさせてからの方がよいと思います。
  • id:zachouR
    b-windさん

    僕も他の言語で出来れば一番いいと思っています。

    しかし、現時点で自分がPerlしか扱えない(javaも
    多少はできますが、自分の力不足で小回りがきかない感がありまして)のと、ソースをくむ上で一番柔軟性があるとの判断がおりた為です。

    「CGIにするにしてもそれで問題点をはっきりさせてからの方がよいと思います。」
    耳が痛いです。すいません。本当にその通りだと思います。
    つぎはぎつぎはぎで、なんとかやっている状況です。
    実際、プログラムは得意ではないのですが、できる人が自分しかおらず、、、。
  • id:b-wind
    >僕も他の言語で出来れば一番いいと思っています。
    そうじゃなくて、コマンドプロンプトから Perl を実行するという事。
    http://allabout.co.jp/internet/cgiperl/closeup/CU20040430A/
  • id:zachouR


    b-windさん

    コマンドプロンプトが頭にありませんでした。
    一度、こちらで今からデバッグしてみます。

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

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

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

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