Repository navigation
OTR_ConcurrencyTuning
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
スレッド・接続など、同時実行性に関わる環境設定。主にインフラ担当・纏め者の性能設計である。
- ランタイムで調整の対象がまったく違う。 net48(IIS)の設定の多くは、net10.0(Kestrel)では効かない。
- 先回りして設定をいじらない。 実測でスレッドの枯渇やキューの溢れが出てから調整する(ログ分析)。
| 設定 | 役割 |
|---|---|
machine.config の <processModel>
|
ワーカー・IO スレッドの上限(autoConfig=true で自動最適化。通常は触らない) |
machine.config の <httpRuntime>
|
空きスレッドの確保、実行タイムアウト |
machine.config の <connectionManagement maxconnection>
|
アウトバウンド接続の 1 アドレスあたりの同時接続数(既定 2)。外部 API・Web サービスを多く呼ぶなら増やす |
aspnet.config の <applicationPool>
|
IIS 統合パイプラインの同時要求 |
- スレッド・プールは自動で拡張される。上記の設定は効かない。
-
第一原則は
async/awaitを末端まで通すこと。 スレッドをブロックしなければ、少ないスレッドで多くの同時要求を捌ける。 - Kestrel の
Limits.MaxConcurrentConnections(既定は無制限)。 - アウトバウンド接続は
SocketsHttpHandler.MaxConnectionsPerServer、IHttpClientFactoryで接続プールを管理する。 - IIS の背後で動かすなら、同時要求・キューは IIS のアプリケーション・プール側の設定になる。
- net48 のサンプルは IIS / IIS Express で動くが、通常は自動最適化で足りる。外部 IdP・Web サービスを多用するなら
maxconnectionを検討する。 - net10.0 は Kestrel。B 層の呼び出しは
DoBusinessLogicAsyncを使う(P層(ASP.NET MVC)の実装)。
- スキル
opentouryo-app-design(references/concurrency-tuning.md)を使わせる。 - エージェントが net48 の知識(
machine.configなど)を net10.0 に持ち込んでいないかを確認する。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。