マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ASP.NETのタイムアウトについての考慮点を纏めました。

クライアント側の設定

クライアント側のタイムアウトは、

リクエスト-レスポンス間のタイムアウトについて言及しているものが多いので、

タイムアウト後にサーバ側が

  • 動作し続けるものと、
  • 動作し続けないもの

があるので注意が必要。

HTTPクライアント

  • HTTPクライアント側(クライアント側)のタイムアウト値。
  • こちらは、タイムアウト後にサーバー側が動作し続けるモノが多い。
  • HTTPクライアントに依って異なるが、だいたい以下のものがある。

WebRequest?のタイムアウト

HttpClientのタイムアウト

WCFクライアントのタイムアウト

DBクライアント

  • データ・プロバイダ側(クライアント側)のタイムアウト値。
  • こちらは、タイムアウト後にサーバ側が停止(ロールバック)されるモノが多い。
  • データ・プロバイダに依って異なるが、だいたい以下のものがある。

コネクション・タイムアウト(接続のタイムアウト)

クエリの接続のタイムアウト

コマンド・タイムアウト(実行のタイムアウト)

クエリの実行のタイムアウト

サーバ側の設定

サーバ側のタイムアウトは、
実行タイムアウト以外に様々なタイムアウトが存在する。

実行タイムアウトの場合、
タイムアウト後にサーバ側は動作を停止する(当然といえば当然)。

Webサーバ

コネクション・タイムアウト(接続のタイムアウト)

  • こちらは、Keep-Alives系のタイムアウトになる。
  • TCP の RST パケットが送信されるもよう。

上記以外のタイムアウト

  • 意外にも、上記以外のタイムアウト値を発見できず。
  • 実行タイムアウト系は、APサーバのタイムアウトだからか。

APサーバ

アプリケーション プールのアイドル タイムアウト

ASP.NETのタイムアウト

Web.config(httpRuntimeタグのexecutionTimeout属性)に記述する。

WCFサーバーのタイムアウト

WS-*だけあって、色々あって難しい
(...のが普及しなかった理由でもありそう)。

ASP.NETのSessionタイムアウト

Web.config(sessionタグのtimeout属性)に記述する。

各種認証のタイムアウト

DBサーバ

  • DBに依って異なるが、だいたい以下のものがある。
  • 通常、DBの実行タイムアウト相当は、データプロバイダ側にある模様。

ロック・タイムアウト(DBのロック待ちのタイムアウト)

トランザクション・タイムアウト(トランザクション実行のタイムアウト)

  • トランザクション処理の実行のタイムアウト

コネクション・タイムアウト(接続のタイムアウト)

  • クライアント側設定とサーバ側設定がある。
  • コネクション・レベルのタイムアウトなので、
    どちら側の設定の場合も、タイムアウト時に、
    サーバは動作をしていないことになる。

クライアント側設定

DBのクライアント側タイムアウト

サーバ側設定

IISのサーバ側タイムアウト

コマンド・タイムアウト(実行のタイムアウト)

クライアント側設定

DBのクライアント側のコマンド・タイムアウト

DBのクライアント側のトランザクション・タイムアウト

サーバ側設定

ASP.NETのサーバ側タイムアウト

タイムアウトとトランザクションとの関連

クライアント側タイムアウト

  • クライアント側タイムアウトでは、APサーバのThreadは停止しないことがある。
  • 停止しない場合、Transactionの結果はAPサーバの処理結果に依る。

サーバ側タイムアウト

  • サーバ側タイムアウトでは、APサーバのThreadが停止する。
  • 停止する場合は、Transactionはロールバックされる。
  • ConnectionやTransactionオブジェクトは、CloseされないでGCされるとTransactionをロールバックする仕様であるため。
  • 従って、Exceptionが上がっているのにTransactionオブジェクトをCommitするようなコードを書いてはダメ。

参考


Tags: :あるある, :.NET開発, :ASP.NET, :障害対応, :性能


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-07-02 (木) 18:46:10 (1386d)