2009-05-18 19 views
-4

昨日までうまく動作していたSQL Serverデータベースを利用したWebアプリケーションがあります。今私はそのアプリケーションでパフォーマンスの問題があります。アプリケーションの問題か、データベースの問題かハードウェアの問題かをどのように知るのですか?アプリケーションの問題、データベースの問題、またはハードウェアの問題の特定

パフォーマンスの問題がアプリケーション、データベース、またはハードウェアに関連しているかどうかを確認するための基本的なトラブルシューティングの手順をステップバイステップで教えてもらえますか?

+0

あなたのサーバー側の技術は何ですか? –

+4

の範囲が広すぎる:「昨日までうまく動作しているアプリケーションがある」というのは本当の質問ではありません。 –

+0

あまりにも曖昧な - SQL Server? MySql?ウェブアプリケーション?スタンドアロン? 。ネット? Java? PHP?何らかのエラーメッセージが表示されていますか? 「パフォーマンスの問題」とは何ですか?接続が切断されましたか?ロード時間が遅い? – matt

答えて

1

この質問は、あなたが問題を診断するの近くに取得することができます前に、追加の質問を必要としている:あなたは、ソースコードを

持っていますか?あなたは、アプリケーションがパフォーマンス上の問題を抱えている間に、どのSQL文が実行されているのか知っていますか?その場合、SQLコンソールウィンドウからDBに対してSQLステートメントを直接実行し、パフォーマンスの問題が純粋にDBにあるかどうかを確認することができます。

DBログにアクセスできますか?私はSQLサーバのログに慣れていませんが、Oracleにはたくさんのものがあり、彼らは良いものでいっぱいです。

DBが十分に応答していると思われる場合、ネットワークが関与していますか?これはWebアプリケーションですか? WebサーバーのWebログにアクセスできますか?

問題は一部のユーザーに限定されていますか?一部のユーザーはこの問題を経験していますか?

+0

返信いただきありがとうございます...あなたは、DBが完璧に見えると言わせてくれると言ったように、Webアプリケーションです。どうすればそれをネットワーク問題にすることができますか? すべてのユーザーが問題を抱えていると仮定します。..... – Anoop

1

ランプロファイラ。期間が50ミリ秒を超えるフィルタで、最悪の犯罪者を見つける可能性が非常に高いです。ステートメントがSELECTの場合は、それらをクエリアナライザにコピーして、実際の実行計画を表示し、それに応じて調整します(インデックスの作成など)。

+0

プロファイラーを実行した後、私は、ストアドプロシージャがすでにインデックスを持っているストアドプロシージャをほとんど使用していないことを知りました。インデックスに問題はありません...ステップ – Anoop

+0

問題のあるストアドプロシージャとチェックコードを開きます。ハードに言えば、テーブルからの索引が欠落してから、実行に長時間を要するカーソルになる可能性があります。可能であれば、カーソルから離れてください。 –

+0

テーブルにはインデックスがあるかもしれませんが、インデックスを使用していますか? このシリーズでは、開始する場所をいくつか用意しています: 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/ – GilaMonster

1

まず最初にすべての変更のリストを定義してください。変更はあまりにも小さいです。

変更のリストを取得したら、それらを1つずつバックアップし始めます。

ステップバイステップの詳細ehhh ...これは厳しいものです。私はいつも明白な何かを探しています。私が疑っているものが見える場合は、私がやっていることをやめて、さらに調査してみるか、問題の可能性としてホワイトボードに入れます。

1)インフラストラクチャ(ファイアウォール、スイッチ、DB、HotFix、Webサーバなど)ごとに変更されたすべてのリストを作成することから始めます。何かが変更された場合は、その変更に関する詳細情報があります。私の推測では、そうした情報を持っていないのです。私はあなたに任せようとしているわけではありません。

2)ログを確認します。すべてのアプリケーションはWindows Server上にあるので、まずアプリケーションイベントログを調べます。私はアプリケーションのエラーを探しています。次に、システムイベントログに行きますが、もう一度エラーを探しています。次に、私のIISログの分析を行うかもしれません....私は通常、時間のかかるフィールドをこれらのログで有効にしているので、長時間実行する要求に焦点を当てます。

3)次に、DBサーバーを見ていきます。 SQLプロファイラを実行してどのクエリが長い時間がかかっているかを確認するようDBAに依頼します。また、データベースのロックに関する情報を収集するように依頼します。また、データベースの健全性をチェックするように依頼します(インデックスは最新で、テーブル/インデックスは断片化されています)。

4)次に、Windows Server Adminsは、WebサーバーとSQL Serverでパフォーマンスカウンタの統計情報を収集します。メモリリーク、IOキューイング、CPU使用率を調べたい。

+0

yeap、これが最適なアプローチです昨日までのすべてがうまくいけば... コードだけでなく、HW、接続、使用方法、サービスパック、インフラストラクチャなどを考慮に入れてください... JDが言ったように、それほど変更はありません... – opensas

+0

返信ありがとう....しかし、私はこれ以上のexplonationが必要です...もしあなたが上のシナリオに遭遇したら、どうすれば問題を解決するのですか...私はステップバイステップで説明してください...私はSQLサーバには新しくないので、パフォーマンスチューニングについてよく知っている – Anoop

0

最初の容疑者はコードの変更です。コードに何か問題が発生し、パフォーマンスの問題がその問題と関連している場合、それが主要な疑いです。

何も変更されていない場合、データベースは良い疑いがあります。あなたのタグからと仮定すると、あなたはMS-SQLを使用している、2つの可能性の高いシナリオがあります。

  1. データはエンジンがクエリを実行するために使用するアルゴリズムを変更し、この新しいアルゴリズムが異なるインデックスを必要とする一定のレベルを打ちます。

  2. インデックスは単に再構築する必要があります。 this linkから見ることができるように、インデックスの再構築は非常に簡単です。

0

ユーザーは言うだろう:それは
ネットワークの男が言うだろう修正:それは
データベースの男は言うだろう、データベースの問題である:それはアプリケーションの問題
アプリケーションであり、遅い
上司は言うだろう実行されています男は言う:それはネットワークの問題です

関連する問題