2009-05-27 24 views
0

W2003 Webサーバーで実行している約30サイトのうち1つで問題が発生しています。その日の約25%が、おそらくSQLタイムアウトエラー

、ウェブサイトは、常に返します:SQLへの様々な接続上のSQLタイムアウトエラーを(ODBCを使用)

私は(私は見つけることができるよう、最新のODBCドライバをチェックし、更新していますまた、SQL Serverに問題があるかどうかを確認しています(Gb LAN経由で接続されている同じネットワーク上の別のサーバーが稼動している別のサーバー)。

IISログファイルは "[Microsoft] [ODBC_SQL_Server_Driver] Timeout_expired"

私は今朝問題が発生したので、SQLサーバーを再起動して負荷に関連した問題や何かでしたが、サイトは再起動後約20分間これらのエラーを生成し続けました(この時点で他のすべてのサイトが動作していましたが) - タイムアウトして再び動作しています。

私は、この変更があるかどうかを確認するために、WebサイトのSQL接続のタイムアウトを延長しようとしましたが、それは何もしていないようです。

このサイトは、問題なく連続して約3年間稼働しており、私たちのサーバー上で何か変更されていません。これは、クリスマスの時期に起こり始めました。

/(サイトは、従来のASPで)正しく閉じられ、それはあまりにも多くの同時接続を開いていないことを保証し、私はDBの接続がオープンされていることを確認するために、すべてのコードをしてきた

- が、すべて無駄にして私はアイデアがなくなり始めた....誰ですか?

私の唯一の考えは、ODBCの代わりにOLEDB接続に変更することですが、それを行う前に、私が最初に試してみることができなかった何かがないことを確認したいと思っていました。

ありがとうございました!

カール。

+0

私はいくつかの興味深い情報を与えてくれたSQLのパフォーマンスを監視するソフトウェアをインストールしましたが、どうすれば効果的に使うことができますか?書き込み(ディスク待機時間、MS)は60ms〜140msの間にあるように見えます。通常のレポートは約10〜15msです。また、キャッシュヒット(Logical Reads/Physical Reads)は非常に悪いようで、Physical Reads(RW Per Sec)は150ms〜400msの範囲内にあるようです.... それはどういう意味ですか?葉書に答え.... –

答えて

0

SQL Serverには、インデックスの再構築を含む定期的な保守計画がスケジュールされており、実行中ですか?

0

コードを変更していないので、接続に問題はありません。

なぜSQL文が長くかかるのかを調べてください。もっと簡単に言うのは難しいです。変更されていないコードと他のデータベースの使用の間にデッドロック状況があることがあります。にはが変更されています。しかし、それを追跡し、変更されていない作業コードに触れないようにする必要があります。

1

あなたはSQL接続のタイムアウトを変更することについて言及していますが、正確にはタイムアウトが間違っているとはっきりしません。つまり、データベースへの接続かクエリに時間がかかりますか?

役立つツールの1つがSQLプロファイラです。タイムアウトが発生しているユーザーまたはデータベースに制限します。クエリの長​​さが問題になる場合は、どのクエリが長く実行されているかを正確に把握できるはずです。

接続自体がタイムアウトしている場合は、Management Studioの[現在のアクティビティ]にチェックマークを付けます。これは開いている接続の数を示します。彼らが大きいなら、どこかに漏れがあるかもしれません。あなたは含まれていた接続文字列を使用して実行することで、開発中のものをテストすることができます。これは、リークがすぐに接続プールを使い果たすことになります

MAX POOL SIZE=2; 

Mitch Wheatの提案は非常に優れていますが、不正確な統計情報は実際に時間の経過とともにパフォーマンスを低下させる可能性があります。

SELECT 
    object_name = Object_Name(ind.object_id), 
    IndexName = ind.name, 
    StatisticsDate = STATS_DATE(ind.object_id, ind.index_id) 
FROM SYS.INDEXES ind 
order by STATS_DATE(ind.object_id, ind.index_id) desc 
+0

私はいくつかの興味深い情報を与えてくれたSQLのパフォーマンスを監視するソフトウェアをインストールしましたが、どうすれば効果的に使うことができますか?私のSeek Time Writes(Disk Wait Time、MS)は60msから140msの間にあると思われます。通常のレポートは約10-15msです。また、キャッシュヒット(Logical Reads/Physical Reads)は非常に悪いようで、Physical Reads(RW Per Sec)は150ms〜400msの範囲内にあるようです。はがきに答えて.... –

+0

"実行バッチ"がかかる時を見ることができます。 10秒未満であれば、Webサーバーにタイムアウトが与えられていません。私は同時接続の数を調査したいと思います。 – Andomar

0

上記のこれらのものが機能しなかった場合、私はタスクマネージャの下で、あなたのページファイル(PF)の使用状況を確認するだろうし、それがである場所を確認:あなたの統計情報が最新である場合には、このクエリはあなたを伝えることができます。仮想メモリが不足しているためタイムアウトエラーが発生する可能性があります。それがトップの近くにあるように見える場合は、それをより高くすることを検討してください。私は散発的に、そしてアプリケーションのさまざまな部分で、多くのSQLタイムアウトエラーを受けました。パフォーマンスの問題であることが判明しました。あなたのサーバー上にあるRAMの量に応じて、少なくとも4000mbのページファイルをお勧めします。

関連する問題