0

私は、SQL サーバー データベースを使用する ASP .NET MVC 3 で開発されたアプリケーションを 1 つ持っています。

これとは別に、外部 Web サービスを呼び出して同じデータベースを情報とビジネス ルールで更新する 1 つのコンソール アプリケーションがあります。(基本的に、Web サービスからレコードを反復処理し、ビジネス ルールを処理して、同じデータベースを更新します)、定期的に処理するように Windows スケジューラを使用してコンソール アプリケーションを構成しました。

問題は、コンソール アプリケーションが定期的に実行されると、100% の CPU 使用率を使用することです (Web サービスから 2000 を超えるレコードを取得しているため)。そのため、現在の MVC アプリケーションがハージングするか、動作が非常に遅くなることがあります。両方のアプリケーションが同じ Windows サーバーで構成されているためです。

両方のアプリケーションで使用される中央データベースがあるため、同じサーバー上に両方のものが必要な場合、この問題をどのように解決すればよいか、誰か教えてください。

前もって感謝します。

4

1 に答える 1

1

誰もが実際に解決策を提供できる詳細を提供していないので、私はそれにどのようにアプローチするかを提案します.

まず、データベース スキーマを DBA と一緒に調べて、テーブル ロックなどがないことを確認します (または、ある場合は、それらを補うための戦略を考え出します)。次に、SQL Server プロファイラーを使用して、これらの実行中に SQL サーバーのどこにボトルネックがあるか (またはボトルネックがあるか) を確認します。次に、コンソール アプリケーションのプロファイルを作成して、実行する必要のないことを実行していないことを確認します。Web サイトのプロファイリングを行って、速度低下の原因となっているものがあるかどうかを確認することも検討するかもしれません。

その後、コンソール アプリケーションを削除して、その機能をサイトに組み込む方法を考えました。特定の Web リクエストで別のアプリケーションを生成することはスケーラブルではありません。それらが一度に 2 つ以上入ってくると、サーバーが非常に簡単に停止する可能性があります。

于 2012-08-13T14:31:58.307 に答える