0

約9つのWCFサービスをホストし、別の3つのWCFサービスのクライアントとして機能するコアWindowsサービスがあります。WCFを介してこのWindowsサービスと通信するフロントエンドWebサイトがあります。

ある時点で、Windowsサービスは、100%のCPU使用率をもたらすいくつかの重い操作を実行しており、通常、WindowsサービスとSQLサーバーの間で60〜40に分割されます。

これは、Webサイト間のWCF接続/要求がタイムアウトする場所であり、その結果、UIが非常に応答しなくなります。

UI関連のWCF呼び出しがとにかく実行され、最優先されるようにする方法を探しています。

私たちの主な問題は、Windowsサービス、Webサイト、およびSQLサーバーがすべて1台のマシンで実行されているこの展開シナリオに固執する必要があることです。CPU使用率が100%であっても、レスポンシブUIを維持する必要があります。そのための修正をどこから探し始めるかわかりません...

4

1 に答える 1

2

サービス エンドポイントを 2 つの別々のホストに分割する必要があるように思えます。大容量のエンドポイントはオフラインのキューから処理し、低レイテンシのエンドポイントは UI からの要求を同期的に処理します。

発生している問題の種類は、同じプロセスで大量のリソースと低遅延という相反するリソースのニーズのバランスをとろうとする場合によく見られます。

この方法でスケールアウトできない場合は、それについてできることをあまり提案できません。質問に直接答えなかったことをお詫びする必要があります。

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

于 2012-04-07T14:02:52.390 に答える