2013-02-21 86 views
21

ASP.Net Webサイトでは、一部のリクエストがタイムアウトしました。 AppDynamicsは、SQLプロシージャコールが数秒で​​戻ってくることを示していますが、SNIReadSyncOverAsyncで100秒以上を費やしています。SNIReadSyncOverAsyncとは何ですか?また、完了に時間がかかる理由を教えてください。

誰もがこの方法が何であるかを知っていますか、なぜそれが多くの時間を費やしているのでしょうか?私たちはEFを使用していません。これは、私が見つけたすべての質問/投稿で参照されています。事前に

おかげ

更新

それはしばらくしていると私たちはすべての時間がSNIReadSyncOverAsyncに費やされていた理由として、解像度に来たことはありませんが、私はいくつかの考えを持っています。

このケースでは、AppDynamicsの特定のバージョンがSQL呼び出しに費やされた時間を報告していたと思われますが、私はこれをバックアップするための実際のデータはありません。 。最終的に、SNIReadSyncOverAsyncで費やされた時間が記録され、クエリ自体が時間切れになったことがわかりました。

これは、同じクエリが同じデータベースのSSMSで即座に実行されるため、まだそれほど多くはありませんでした。

最終的な回答はARITHABORTに関連していました。私たちのアプリケーションとSSMSは2つの異なる実行計画(https://dba.stackexchange.com/a/9841参照)を使用して、SSMSでタイムアウトを再現できなかった理由を説明しています。

これを解決したら、チューニングが必要な手順の一部を特定できました。原因不明のタイムアウトまたはSNIReadSyncOverAsyncが実行されませんでした。

+0

MSからのアップデートはありますか? – too

+0

残念ながら、私たちは問題を解決できませんでした。もっと奇妙なのは、AppDynamicsの新しいバージョンでは、SNIReadSyncOverAsyncメソッドでもDbDataAdapter.Fillで問題が表示されないということです。 –

答えて

11

SNOはSQL Serverネットワークインターフェイスであり、SQL Serverからのデータを待つほとんどのADO.NETフルコールスタックに上記の方法が存在します。これは、上位レベルの実装がEF、生のADO.NETなのかどうかにかかわらずです。

AppDynamicsがストアドプロシージャ実行の完了をキャプチャするために使用するメトリックまたはシグナルを確認できませんが、ストアドプロシージャが比較的速く完了したがサーバーからクエリ結果を送信すると、お客様のクライアントにはしばらく時間がかかります。

インフラストラクチャについて詳しく知りませんが、それ以上に助けが非常に難しいです。それでも問題が解決しない場合は、SET STATISTICS TIME ONと "Include Client Statistics"をオンにしてSQL Server Management Studioで同じクエリを実行することをお勧めします。おそらくそれらの数字は、データ転送が実際に問題であるかどうかについてのアイデアを与えるでしょう。

+0

私は実際にこのことについてMSからサポートケースを開いています。まだ強いリードはありません。私は答えが得られたら更新します。 SET STATISTICSのヒントをありがとう。 –

+3

Microsoft @ ryan.rousseauから有益な回答を得たことはありますか? –

0

私のケースでは、Jouniが言及しているように、クエリ結果の送信が非常に遅いのは確かです。 Automapperを使用して、クライアントに送信するためのデータを準備します。したがって、正確なプロパティがどのような負荷を引き起こしたのかは不明ですが、クライアントサイドに表示する必要のない複合オブジェクトをすべて切り詰めていることを確認してください。 (私は当初、クライアント側でグリッドで表示するコレクションが必要でした)。実行は非常に高速になりました。

関連する問題