2012-04-07 18 views
0

私たちは、約9のWCFサービスをホストし、別の3つのWCFサービスのクライアントとして機能するコアWindowsサービスを提供しています。私たちはWCFを介してこのWindowsサービスと通信するフロントエンドのWebサイトを持っています。WCF Windowsサービスと非応答UI

somepointでは、WindowsサービスはCPU使用率が100%になるような重い操作を実行しています。通常、WindowsサービスとSQLサーバーの間で60-40に分割されます。

これは、Webサイト間のWCF接続/要求がタイムアウトするため、非常に応答の遅いUIになります。

私は、UI関連のWCF呼び出しが実行されたかどうかを確認する方法を探していますが、これは最優先事項です。

私たちの主な問題は、Windowsサービス、Webサイト、SQLサーバーがすべて1台のマシン上で実行されているこの展開シナリオに固執する必要があることです。我々は100%のCPU使用率でも応答性の高いUIを維持する必要があります。そのための修正を探す場所がわからない...

+0

あなたが必要とするのは、UIとサーバーのスレッドベースの操作です。多くのCPUコアを使用している場合は並列処理 –

+1

サービスのキュー要求はどうなりますか?リクエストをキューに入れ、UI通知のためにWebソケットのようなものを使用できます。あなたのCPUがロードされる限り、あなたのサービスサーバの負荷分散を試みることができます。しかし、DBサーバーを置いているので、手間がかかります。 –

答えて

2

サービスエンドポイントを2つの別々のホストに分割する必要があります.1つは、大量またはプロセス集約型操作用で、1つは低遅延操作用です。大量のエンドポイントはキューからオフラインで処理され、低遅延のエンドポイントはUIから同期して要求を処理します。

大量かつ低遅延の競合するリソースのニーズを同じプロセスでバランスさせようとすると、典型的な問題が発生します。

このようにスケールアウトすることができない場合、私は実際にそれについて多くのことを示唆することはできませんし、直接あなたの質問に答えることを謝罪する必要があります。

もう1つのことは、非同期のすべてを移動し、CQRSなどのパターンを使用して、読み取りと書き込みの要件を分離することです。

関連する問題