3

CPU を大量に使用する .net 4.0 Windows アプリケーションを .net 4.0 wcf サービスに移植しています。基本的に、.net クラスを wcf サービスにインポートしただけです。

wcf サービスでのパフォーマンスを除いて、すべて正常に動作しています。6267947 ティック (2539 ミリ秒) かかるタスクは、同じ開発マシンでローカルに実行されている aspx.net wcf サービスで 815349861 ティック (13045 ミリ秒) を使用します。

ローカル マシンと同じくらいパフォーマンスが悪い appharbor にサービス + テスト クライアントを既にアップロードしています。テスト アプリへのリンクはhttp://www.wsolver.com/です。パフォーマンスを向上させる方法についてのアイデアはありますか?

4

5 に答える 5

3

以下の記事とホワイトペーパーをご覧ください。調査するのに十分な具体的なパフォーマンスの考慮事項と、微調整、最適化、または変更するための非常に実用的な設定を提供する必要があると思います。

パフォーマンスチューニングWCFサービス

WCFWebサービスのパフォーマンスの最適化

ServiceThrottlingBehaviorを使用してWCFサービスのパフォーマンスを制御する

輸送割当

IISパフォーマンスの最適化

ASP.NETパフォーマンスの概要

Windows Communication Foundation(WCF)と既存の分散通信テクノロジのパフォーマンスの比較

于 2012-02-19T23:18:27.120 に答える
3

リクエスト時に構築される可能性のあるサービスへの依存関係を確認します。これらには、コンストラクターの依存関係とフィールド/プロパティの依存関係が含まれます。多分それらの1つが遅延を引き起こしていますか?このような場合は、シングルトンを使用して長期実行クラスをインスタンス化することを検討してください。

後続のリクエストが依然として遅延を引き起こしていることを確認しましたか?

また、Datetime.Now.toString() のような単純なことを行うバンドの新しいサービスを作成し、同じ問題があるかどうかを確認します。

于 2012-02-19T11:10:24.417 に答える
2

複雑なデータ構造の時間のかかる初期化を行う必要がある場合は、一度それをApplication_Start()行い、生成されたデータ構造を MvcApplication オブジェクトの静的変数に割り当てる必要があります。アプリケーションの開始時に一度だけ実行すると、リクエストごとに実行するよりもはるかに高速になります。

于 2012-02-20T23:40:56.857 に答える
1

13 秒間 (または procdump を使用して数回) の間に完全なメモリ ダンプを取得し、プロセス (windbg と sos.dll) で何が起こっているかを実際に調べます。次に、どのコードが原因であるかを絞り込むことができます。

于 2012-02-19T22:01:07.550 に答える
0

ディクショナリ ツリーは一度だけキャッシュにロードされると思いますか? あなたはすべての呼び出しでそれをロードしていませんよね?

于 2012-02-19T11:53:01.623 に答える