最近、既存の ASP.NET MVC 2 アプリケーションを、WebAPI バックエンドを使用して MVC 4 に変換しました。残念ながら、WebAPI に関して深刻なパフォーマンスの問題がいくつかあることに気付きました。
MiniProfiler をセットアップし、ボトルネックを特定できるかどうかを確認するためのいくつかの手順を追加しましたが、驚いたことに、それはデータベースではありません。変換前は、このようなリクエストに 50 ミリ秒もかからなかったので、これらの単純なリクエストに 2 秒以上かかるのを見ると、少しショックを受けます。
奇妙な点は、これらすべてが、要求が SQL 呼び出し自体に到達する前に、待機時間の大部分が発生することです。
ここで実際に何が起こっているのかをさらに調べるために、MiniProfiler を WebAPI の呼び出しにさらに深く結びつける既知の方法があるかどうか疑問に思っていました。どんな援助でも大歓迎です。
FWIW、これがこのリクエストに使用されているコードです
WebAPI コントローラー:
[HttpGet]
public bool AssetExistsById(string assetId) {
using (Current.Profiler.Step("WebAPI Call To Model")) {
return Asset.AssetExists(assetId);
}
}
資産モデル:
public static bool AssetExists(string assetId) {
using (Current.Profiler.Step("WCF call to DataAccess lib")) {
return WcfEndPoint.AssetExists(assetId);
}
}
ありがとう!
アップデート
ここで何が起こっているのかがわかりました...App_Start/WebApiConfig.cs
ファイルでシステム診断トレースが有効になっていることがわかりました。次の行をランダムにコメントアウトしたところ、すべて修正されました。
config.EnableSystemDiagnosticsTracing();
これが他の人に役立つことを願っています!