0

数日前にプロジェクトを成功させましたが、WCFRestfulAPIでパフォーマンスを改善する必要があります。

プロジェクトは以下のツール/テクノロジーを使用しています

1-LINQ2-
エンティティフレームワーク
3-ロギング/例外処理用のエンタープライズライブラリ4-
MSSQL20085 -IIS7
に展開

注意すべき点がいくつかあります

1〜10〜20のクエリには、LINQで7つを超えるテーブル結合があります

2-現在のIISには10を超えるアプリケーションが展開されています

3-エンティティフレームワークには約60のテーブルがあります

4-WCFAPIはHTTPSを使用しています

5-すべてのAPI呼び出しはJSON応答を返します

一般的な流れは

1-WCF呼び出しが受信されました

2-セッションがチェックされます

3-BLレイヤーからの関数が呼び出されます

4-DA層からの関数が呼び出されます

5-応答がJSONで返される

現在、私の少しの知識と研究によると、次のことがパフォーマンスを改善するかもしれないと思います

1-参照データのキャッシュを実装する

2- 3つ以上の結合を持つLINQクエリをストアドプロシージャに移動します(ヒントを使用しますか?)

3-データベーステーブルのインデックスの再作成

4-パフォーマンスカウンターを使用して、問題のある領域を把握します

5-更新/削除/挿入が3つを超える関数をストアドプロシージャに移動します

上記の改善に関するいくつかの問題を指摘できますか?そして、他にどのような改善ができますか?

4

1 に答える 1

1

あなたの投稿には、改善提案の背景が欠けています。それらは単なる推測ですか、それとも実際に測定して問題領域として特定しましたか?

最適化のためにどの領域に焦点を当てるべきかを決定するための適切なパフォーマンス監視とプロファイリングに代わるものは実際にはありません。他のすべては単なる当て推量であり、明らかなこともあるかもしれませんが、実際にパフォーマンスを向上させるのはそれほど明白ではないことがよくあります。

  1. パフォーマンスプロファイリングツールを使用してコードを実行し、実際のアプリケーション内の問題領域をすばやく特定します。Visual Studio Performance Analyzer(Visual Studio PremiumまたはUltimate)にアクセスできない場合は、費用がかからない非常に優れたメモリ/CPUプロファイラーであるPerfViewをご覧ください。

  2. MiniProfilerなどのツールを使用して、測定ポイントを簡単に設定したり、実行時にEntityFrameworkの実行を監視したりできます。MiniProfilerは、UIがない場合に便利なデータベースに結果を保存するように構成することもできます。

  3. MiniProfilerで確認できるEntityFrameworkから生成されたT-SQLステートメントを分析すると、SQL実行プランを確認したりSQL IO統計を取得したりすることで、クエリのパフォーマンスを簡単に測定できるようになります。これにより、ストアドプロシージャに何を入れることができるか、または入れる必要があるか、および他のインデックスが必要かどうかについての概要がわかります。

于 2013-02-07T08:58:47.673 に答える