「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ASP.NETのタイムアウトについての考慮点を纏めました。
クライアント側の設定 †
クライアント側のタイムアウトは、
リクエスト-レスポンス間のタイムアウトについて言及しているものが多いので、
タイムアウト後にサーバ側が
があるので注意が必要。
HTTPクライアント †
- HTTPクライアント側(クライアント側)のタイムアウト値。
- こちらは、タイムアウト後にサーバー側が動作し続けるモノが多い。
- HTTPクライアントに依って異なるが、だいたい以下のものがある。
WebRequest? †
DBクライアント †
- データ・プロバイダ側(クライアント側)のタイムアウト値。
- こちらは、タイムアウト後にサーバ側が停止(ロールバック)されるモノが多い。
- データ・プロバイダに依って異なるが、だいたい以下のものがある。
コネクション・タイムアウト(接続のタイムアウト) †
コマンド・タイムアウト(実行タイムアウト) †
サーバ側の設定 †
サーバ側のタイムアウトは、
実行タイムアウト以外に様々なタイムアウトが存在する。
実行タイムアウトの場合、
タイムアウト後にサーバ側は動作を停止する(当然といえば当然)。
Webサーバ †
IISのタイムアウト †
意外にも、コネクション・タイムアウト以外を発見できず。
コネクション・タイムアウト(接続のタイムアウト) †
APサーバ †
アプリケーション プール †
ASP.NET †
web.config(httpRuntimeタグのexecutionTimeout属性)に記述する。
ASP.NETのSessionタイムアウト †
web.config(sessionタグのtimeout属性)に記述する。
各種認証のタイムアウト †
DBサーバ †
- DBに依って異なるが、だいたい以下のものがある。
- 通常、DBの実行タイムアウト相当は、データプロバイダ側にある模様。
ロック・タイムアウト(DBのロック待ちのタイムアウト) †
コネクション・タイムアウト(接続のタイムアウト) †
クライアント側設定とサーバ側設定がある。
コネクション・レベルのタイムアウトなので、
どちら側の設定の場合も、タイムアウト時に、サーバは動作をしていないことになる。
クライアント側設定 †
サーバ側設定 †
タイムアウトとトランザクションとの関連 †
クライアント側タイムアウト †
クライアント側タイムアウトでは、APサーバのThreadは停止しないことがある。
停止しない場合、Transactionの結果はAPサーバの処理結果に依る。
サーバ側タイムアウト †
サーバ側タイムアウトでは、APサーバのThreadが停止する。
停止する場合は、Transactionはロールバックされる。
- ConnectionやTransactionオブジェクトは、CloseされないでGCされるとTransactionをロールバックする仕様であるため。
- 従って、Exceptionが上がっているのにTransactionオブジェクトをCommitするようなコードを書いてはダメ。
参考 †
Tags: :あるある, :.NET開発, :ASP.NET, :障害対応, :性能