- ベストアンサー
IIS5.1でCGI Timeoutになる原因を教えてください。
- Perlでプログラムを書きIIS 5.1で実行すると約5分程度でCGI Timeoutになってしまいます。
- IISのCGIスクリプトタイムアウト値を延長することで解決できる可能性があります。
- CGI Timeoutエラーは、指定されたCGIアプリケーションの処理時間が許容時間を超えたため、サーバーがプロセスを削除したことを示しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一応Perlカテゴリーでの質問ですのでPerl側の対処法を説明します。 ■forkを使ってバックグラウンド処理にさせる。 http://www.stackasterisk.jp/tech/program/perl04_02.jsp ブラウザ上での応答だけはすぐに行うが、実際はサーバー内の別プロセスでじっくり最後まで実行させることができます。 途中経過や最終結果のレポートを表示しないといけない場合は、上記方法ではだめです。
その他の回答 (1)
- atom_seed
- ベストアンサー率48% (25/52)
タイムアウトになりそうなプログラムを書いていないといえる根拠がなにもわかりませんので、単純にタイムアウトになるようなプログラムではないかと思えるのですが。 そのプログラムは何をするものだったんでしょう? ・無限ループになっていませんか? ・巨大なファイルの読み書きをしていませんか? ・長時間かけてメール配信していませんか? ・スリープさせていませんか?
お礼
>>・無限ループになっていませんか? >なっていません。 >5分以内で処理できるものについては応答が正常に返ってきています。 5分以上かかる同じ処理をCGIではなくperlとしてテキスト処理をすると正常に処理できます。
補足
>タイムアウトになりそうなプログラムを書いていないといえる根拠がなにもわかりませんので、単純にタイムアウトになるようなプログラムではないかと思えるのですが。 タイムアウト自体はプログラムミスの可能性はありますが、長時間かかる処理は約5分で必ずタイムアウトしてしまうので、それを延長する設定ファイル場所や方法が知りたいのです。 >そのプログラムは何をするものだったんでしょう? 入力された値(アドレス情報含む)を取得してネットワーク機器を制御して得た結果を返すプログラムです。 >・無限ループになっていませんか? なっていません。 5分以内で処理できるものについては応答が正常に返ってきています。 >・巨大なファイルの読み書きをしていませんか? していますが、別の処理をする時にもそのファイルを読み取って正常に処理が終了していることからタイムアウトの原因とは考えにくいです。 >・長時間かけてメール配信していませんか? メール配信プログラムではありません。 >・スリープさせていませんか? していません。 IISの設定でCGIタイムアウトを延長させる設定がある(CGIスクリプトタイムアウト値以外に)らしいという話は聞きましたが、忘れたと、言われました。もし、ご存知でしたら教えてください。 レジストリをいじることでうまくいくなら、その方法もお願いします。 ※ちなみにMetaBase.xmlはIIS5.1ではMetaBase.binであり編集できませんでした。
お礼
返信ありがとうございます。 しかしながら、下記のように結果を表示する必要がありますので、forkでは難しいかと思います。 >>そのプログラムは何をするものだったんでしょう? >入力された値(アドレス情報含む)を取得してネットワーク機器を制御し >て得た結果を返すプログラムです。 >一応Perlカテゴリーでの質問ですのでPerl側の対処法を説明します。 CGIのカテゴリですが、それに付随するエラーメッセージをサーバ側が出力していますので良いと思いましたが、IISの設定に関してはサーバやwindowsカテゴリに登録すべきだったのかもしれません。 しかしながら、私が知りたいのは下記事項です。 >タイムアウト自体はプログラムミスの可能性はありますが、 >長時間かかる処理は約5分で必ずタイムアウトしてしまうので、 >それを延長する設定ファイル場所や方法が知りたいのです。 よろしくおねがいします。
補足
すみません。自己解決しました。 MetaEditの\\LM\W3SVC\1\ROOT\プログラム名のCGI Timeout値を1800秒にすることで解決しました。 ご協力ありがとうございました。