Repository navigation
OTR_TimeoutValues
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
ASP.NET と Open 棟梁で考慮すべきタイムアウト値と、その大小関係。
- 原則:呼び出し元(外側)ほど長くする。 内側が先にタイムアウトし、その失敗を外側が受け取れるようにする。
- 外側が先に切れると、内側の処理が孤児になり(続行中なのに呼び出し元は諦める)、本当の失敗も掴めない。
| 階層 | タイムアウト | 設定場所 | 既定 | 備考 |
|---|---|---|---|---|
| ① クライアント |
HttpClient.Timeout など |
コード | 100 秒 | OAuth2 / OIDC は OAuth2AndOIDCClient.HttpClient
|
| ② ASP.NET のリクエスト処理 | httpRuntime executionTimeout |
Web.config |
110 秒(debug="false" 時) |
net48 |
| ③ DB 接続の確立 | Connect Timeout |
接続文字列 | 15 秒 | |
| ④ DB コマンドの実行 | CommandTimeout |
設定 | 30 秒 | Open 棟梁は設定 FxSqlCommandTimeout で共通に設定する |
| ⑤ DB のロック待ち |
SET LOCK_TIMEOUT(SQL Server) |
セッション・SQL | 無限 | 最も内側 |
- 目安は ① > ② > ④ > ⑤。特に ② を ④ より長くしないと、DB の実行の途中で ASP.NET がリクエストを打ち切る。
- 長時間の処理(バッチ、帳票)は、② を延ばすか、非同期化する(バッチ処理方式、リッチクライアントの非同期呼び出し)。
| タイムアウト | 設定場所 | 既定 | 備考 |
|---|---|---|---|
| セッション | <sessionState timeout> |
20 分 | タイムアウトの検出は状態管理 |
| アプリケーション・プールのアイドル | IIS | 20 分 | アイドル ≧ セッションにする(短いと、セッションが生きているつもりでプロセスが先に落ちる) |
- スキル
opentouryo-app-design(references/timeout-values.md)を使わせる。 - タイムアウト値をコードに直書きさせず、
FxSqlCommandTimeoutなどの共通の設定を使わせる。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。