web-dev-qa-db-ja.com

SQL / IIS(クラシックASP)Webアプリケーションのパフォーマンスの最適化

サードパーティのホスティングプロバイダー(Rackspace)でホストしているクラシックASP Webアプリケーションがあります。SQLサーバー上に最大100のデータベースがあり、Web上にはほぼ同じ数のWebサイトがあります。 -サーバー(IIS)。パフォーマンスを最適化するためのヒントはありますか。1日を通してメモリとCPUの急増が見られることがあります。単純なSQLサーバーとWebサーバーのペアでセットアップされています。

3
Mike Messina

それは簡単な質問ではなく、簡単な答えもありません。本全体がパフォーマンスの最適化をテーマに書かれています。

たぶん、(最初の部分で)パフォーマンスの問題を見つけることに入るこれらの記事から始めてみてください。 http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-1/

http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-2/

本を提案することもできます。 GrantFritcheyとSajalDamによる「SQL2008パフォーマンスチューニングの蒸留」。

クエリのパフォーマンスが最も悪いものを見つけた場合は、ここまたは優れたSQLフォーラムに投稿してください。誰かが間違いなくあなたを助けてくれます。現状では、質問の範囲が広すぎて簡単な答えが得られません。

2
GilaMonster

SQL側では、SQLプロファイラーを使用して、実行に時間がかかるクエリまたはストアドプロシージャを特定することをお勧めします。ここで実際の問題を特定できれば、アプリケーションの速度を上げることができます。

プロファイラーツールでは、正しい情報を取得するために多くのフィルタリングが必要になることがよくあります。実行中のクエリの開始時間を記録し、それらをCPUスパイク時間と一致させようとすることができるという点で素晴らしいです。

2
Sean Howat

プロファイリングを行う必要があると思います。全体的なレベルでは、ボトルネックがどこにあるかを知る必要があるため、一般的なWindowsパフォーマンス監視ガイドラインが適用されます。 CPU(%使用率、%ユーザーモードとカーネルモード、コンテキストスイッチ)、ディスク(キューの長さ、%ディスク時間)、およびメモリ(ページフォールト/秒、ワーキングセットサイズ)の全体的なパフォーマンスをグラフ化します。どのプロセス(IIS WAM、SQL Serverなど)があなたに悲しみを与えているかを絞り込み始めたいと思うでしょう。

他のポスターが言ったように-それがあなたが実行しているSQLクエリであるなら、それはおそらくデータベース最適化問題です。ただし、スクリプトがばかげたクエリ(SELECT *やスクリプト内の結果のフィルタリングなど)を実行していて、データベースの異常なロードを引き起こしている可能性を見逃さないでください。

個々のスクリプトに取り掛かる場合(つまり、ボトルネックがIIS/WAMプロセス)を指していることがわかった場合)、このStackoverflowの質問を見てください: https:// stackoverflow .com/questions/398028/performance-testing-for-classic-asp-pages 基本的な実行タイマーであるコードスニペットがあります。パフォーマンスにさらに影響を与えるリスクがありますが、可視性を高めるために、スクリプトに渡されたパラメーターとスクリプトの実行時間をデータベースに記録することも検討できます。そのデータで異常値を探すと、スクリプトのエッジ条件を見つけるのに役立つ場合があります。理想的には、最初からプロファイリングを念頭に置いて設計する必要があります。改造は難しい場合があります。

1
Evan Anderson