none
ASP.NETで処理に時間のかかるページでIISのサーバーでHttpException エラーになる。 RRS feed

  • 質問

  • お世話になります。
    表題の件ですが、ASP.NETで作成したwebアプリケーションで以下のように
    タイムアウトエラーがイベントビューアに計上されます。



    Event code: 3001 
    Event message: The request has been aborted. 
    Event time: 2017/01/05 17:54:49 
    Event time (UTC): 2017/01/05 8:54:49 
    Event ID: ff3b8186a34842619fb714d03f30249e 
    Event sequence: 45 
    Event occurrence: 1 
    Event detail code: 0 




    Exception information: 
        Exception type: HttpException 
        Exception message: 要求がタイムアウトしました 



    該当サイトのweb.donfigでは、executionTimeoutプロパティをデフォルト値(110秒)よりも長い秒数に設定しているのですが、
    それに満たない秒数で(タイムアウトエラーが発生する場合は秒数が異なる)タイムアウトします。

    そもそも「時間が掛かるページ自体が問題だ」と言われてしまえばその通りなのですが、
    ある程度、一定の秒数として定義できれば利用者へも○○秒ですと要件として伝えられるのと思っているのですが、
    その時々で異なるため説明が難しい状況です。

    指定秒数と異なってしまう要件や、ほかの設定と影響する点などありますでしょうか。


    2017年1月5日 9:30

すべての返信

  • ※「web.donfig」が誤植であり、実際には「web.config」で検証されていることを前提に。
    ※さすがにASP.NET1.1を使っているとは思えないのでASP.NET2.0以降であることを前提に。

    基本的にweb.configのexecutionTimeout値(秒数)を設定するだけでOKです。

    期待する結果が得られないとのことですが、具体的な設定値(期待するタイムアウト値)と実際の挙動(タイムアウトした時間)はどのような状況でしょうか?

    指定秒数と異なる点について、それが15秒以内のズレであるならば以下のスレッドに答えがあります。

    https://social.msdn.microsoft.com/Forums/netframework/ja-JP/a7db7cb8-33b5-40f3-a0f1-8fd70ebfd67e/executiontimeout?forum=aspnetja

    > 15秒単位で Timeout しているかどうかがチェックされるから

    ご参考までに。

    2017年1月6日 8:49
  • ご回答ありがとうございます。

    #「web.donfig」は誤植でした「web.config」になります。
    #ASP.NET2.0 になります。


    ご教授いただきました、「15秒単位でTimeoutのチェック」という文献は他でも確認させて頂いておりました。
    ただ、実際にexecutionTimeoutプロパティに設定しているのは、秒単位ではなく30分とか
    大きな値です(←この指定自体に「いかがなものか」ご指摘頂くのも承知の上ですが)。

    この長いTimeoutの範囲のなかで、10分でタイムアウトする場合もあれば、15分以上タイムアウトせずに
    サーバ側で処理が続行されている場合もあります。

    15秒のズレとは大きく異なっておりましたので、executionTimeout値以外の要素が関係あるのかと思っておりました。


    データベースから抽出、加工とグリッドへの貼り付けなど、クライアントに結果を返すまでwebサーバ側で「分単位」の処理を要してしまう背景として、
    ①そもそも結果レコード数が多い。②データベースから抽出したレコードの加工処理が多い。など様々な要因があるのですが、
    「時間が掛かってでもタイムアウトで処理が中断されてしまうのは困る」というユーザからの意見もあって、藁にもすがる状況でした。


    2017年1月10日 6:46
  • 私も似たような事情でexecutionTimeoutを延ばす対応をしたシステムを扱ったことがありますが、2時間程度かかる処理であっても途中でタイムアウトすることなく処理完了できていた実績があります。

    executionTimeout値が不規則に効かない事象というのは不思議ですね。
    他の方からの有益な情報に私も期待します。

    2017年1月13日 9:40