2012-02-19 13 views
3

私はCPUの重い.net 4.0 Windowsアプリケーションを.net 4.0 wcfサービスに移植します。基本的には、.netクラスをwcfサービスにインポートしたばかりです。.net wcfサービスのパフォーマンスを向上させる方法

wcfサービスでのパフォーマンスを除いて、すべてがうまくいっています - 同じ開発マシンでローカルに実行されているaspx.net wcfサービスで、6267947ティック(2539ms)のタスクでは815349861ティック(13045ms)が使用されます。

私のローカルマシンと同じ性能の悪いappharborにサービス+テストクライアントがすでにアップロードされています - 私のテストアプリケーションへのリンクはhttp://www.wsolver.com/です。どのようにパフォーマンスを向上させることができますか?

+0

あなたのサービスはどのような仕事をしなければなりませんか? –

+0

@Johnny Graberはスクラブルソルバーです。大量の辞書をメモリー内のトライ構造にロードして、多くの検索が行われます – Muleskinner

+2

実際の*行う*コードは同じ時間がかかるはずです。 WCFへの切り替えは、同期コンテキストなどを使用していないと仮定して、トランスポートの問題にのみ影響を与える必要があります。 "やっている"コード?または輸送?または...? –

答えて

2

あなたは、複雑なデータ構造の時間のかかる初期化を行う必要がある場合は、必要があるとMvcApplicationオブジェクトの静的変数にデータ構造を生成し割り当てます。アプリケーションの開始時に一度だけ行うのは、各要求で実行するほうがはるかに高速です。

+0

あなたは、appharborでローカルにwcfサービスを実行しているときとappharborでネットワークを実行しているときのパフォーマンスの差異(計算で3倍遅く、ネットワークトラフィックを考慮しない)がappharborに十分なCPUリソースがないと説明できますか?もしそうなら、余分な労働者を購入してパフォーマンスを最適化することはできますか? – Muleskinner

+0

追加のワーカーを購入しても個々の要求応答時間は増加しませんが、追加の同時実行性が得られるため、合計要求スループットが向上します。より高性能の個人労働者を加えることが、我々がすべきことであるかどうかを検討している。同期要求でこのようなリソース集約的な処理を行うことが適切かどうか、これを非同期AJAX要求に移す方が良いかもしれないかどうかを検討したいかもしれません。 – friism

+0

お返事ありがとうございます – Muleskinner

3

リクエスト時間に作成される可能性のあるサービスの依存関係を確認してください。これらは、コンストラクタの依存関係とフィールド/プロパティの依存関係を含みます。たぶんそのうちの1人が遅れを起こしているのでしょうか?このような場合は、シングルトンを使用して長期実行クラスをインスタンス化することを検討してください。

その後のリクエストでも遅延が発生することを確認しましたか?

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

0

辞書ツリーはキャッシュに1回だけ読み込まれると思いますか?あなたはすべての呼び出しでそれをロードしていないのですか?

+0

現在はすべての呼び出しがロードされています(これは最初のプロトタイプです)が、それは問題ではありません。 Trieの読み込み時間は417msです。 – Muleskinner

1

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

3

下記の記事とホワイトペーパーをご覧ください。私は彼らが探索するのに十分な具体的なパフォーマンスの考慮事項、そして恐らく調整、最適化、または変更するための非常に実用的な設定を与えるべきだと思います。

Performance Tuning WCF Services

​​

Using ServiceThrottlingBehavior to Control WCF Service Performance

Transport Quotas

Optimizing IIS Performance

ASP.NET Performance Overview

でその度に

A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies

+0

これはリンクのかなりのリストだと思いますが、あなたが使用した特定のテクニックのいくつかを拡張して参考にしてもらえますか? – MatthewJ

関連する問題