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

目次

概要

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

クライアント側の設定

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

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

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

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

があるので注意が必要。

HTTPクライアント

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

HttpClient

WCFクライアント

WebRequest?

DBクライアント

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

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

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

サーバ側の設定

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

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

Webサーバ

IISのタイムアウト

意外にも、コネクション・タイムアウト以外を発見できず。

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

APサーバ

アプリケーション プール

ASP.NET

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

WCFサーバー

ASP.NETのSessionタイムアウト

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

各種認証のタイムアウト

DBサーバ

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

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

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

クライアント側設定とサーバ側設定がある。

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

クライアント側設定

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

サーバ側設定

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

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

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

クライアント側タイムアウトでは、APサーバのThreadは停止しないことがある。

停止しない場合、Transactionの結果はAPサーバの処理結果に依る。

サーバ側タイムアウト

サーバ側タイムアウトでは、APサーバのThreadが停止する。

停止する場合は、Transactionはロールバックされる。

  • ConnectionやTransactionオブジェクトは、CloseされないでGCされるとTransactionをロールバックする仕様であるため。
  • 従って、Exceptionが上がっているのにTransactionオブジェクトをCommitするようなコードを書いてはダメ。

参考


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-06 (土) 04:25:21 (46d)