web-dev-qa-db-ja.com

ユーザーがExcelを開いた状態でコンピューターをロックすると、ASYNC_NETWORK_IOが高くなります

毎日午前8時に出入りするユーザーがいますが、SolarWindsDPAでも同じ奇妙なパターンが毎日見られます。

ユーザーが画面をロックすると、Excelがクエリテーブルを更新しているようです。私の質問は:

  1. Excelがそれを行うのを止める方法はありますか?そのような問題と戦ってきたDBAは私だけではありません。
  2. 自分のマシンで問題を再現する方法はありますか?
  3. 既知の問題を検索するためにGoogleキーワードを見つけるのを手伝ってください...私は失敗しました

High Async Network IO from Excel

[〜#〜]更新[〜#〜]

ここでは他の要因が関係している可能性があると私は思いました。

  1. ファイルは、ワークグループ間で共有されるネットワーク接続ストレージドライブにあります。
  2. Excelがファイルハンドルが失われたと見なす原因となる可能性のあるさまざまなネットワークインターフェイスカードの省電力機能の問題を調べました(???)
  3. 「ファイルを開くときにデータを更新する」は、接続プロパティでチェックされています
  4. これは、仮想マシンで発生している可能性があります。

同様の問題を抱えている他のユーザーを1人見つけました: https://social.msdn.Microsoft.com/Forums/sqlserver/en-US/bcc35121-1575-4a7f-b82f-1c20f6fed58d/process-blocked-by -asyncnetworkio-status-blocks-other-queries?forum = sqldatabaseengine

1
John Zabroski

2つのオプション:

  1. クライアントの速度を制御できない場合はどうなりますか?

    a。クエリ結果を一時テーブルに書き込みます。一時テーブルをユーザーに返します。

    b。また、DONE_IN_PROC TDSメッセージがクライアントに送信されることによるラウンドトリップ遅延を回避するために、ストアドプロシージャの先頭でNOCOUNTONを設定することを忘れないでください。

  2. クライアントの速度を制御できる場合はどうなりますか?

    a。 NICが正しく構成されていないか、またはクライアントがVMを使用していて、VMのNICが誤って構成されているかどうかを確認してください。参照: https://www.reddit.com/r/sysadmin/comments/2k7jn5/after_2_years_i_have_finally_solved_my_slow/

    b。 Perfmonを使用して測定します。 Microsoftは、PerfMonネットワーク出力キューの長さに10のヒューリスティックを使用します。参照: https://technet.Microsoft.com/en-us/library/aa997365(v = exchg.80).aspx

    c。クエリBeforeRefreshおよびAfterRefreshイベントハンドラーをワークシートのインストルメントログの手がかりに追加して、ユーザーが何をしているかを判断します。特に、「XL2000:クエリBeforeRefreshおよびAfterRefreshイベントの使用方法」を参照してください。 https://support.Microsoft.com/en-us/help/213187/xl2000-how-to-use-the- query-beforerefresh-and-afterrefresh-events

    d。 SQL呼び出しをキャッシュするExcelアドインを作成します。

更新1/19/2018

私はまだExcelユーザーとの高いASYNC_NETWORK_IOの問題に取り組んでいます。私はこれのより多くの潜在的な原因を見つけたと信じていますが、これらは現時点での理論にすぎません。

  1. 同じスプレッドシートに複数のテーブルがあり、右側の最後のテーブルの行数が左側のテーブルよりも多い場合、Excelが頻繁に「点滅」するようです。これに対応して、SolarWinds Database Performance Analyzerでは、最も多くの行と列を返すこのスプレッドシートのクエリでも、ASYNC_NETWORK_IOの問題が最も高くなります。 (次のステップはこの問題を再現することですが、1人のユーザーに、今のところその巨大な結果セットはまったく必要ないことを説得したので、時間の価値があるかどうかはわかりません。)

  2. Experts Exchange( https://www.experts-exchange.com/questions/25049176/Slow-queries-excuted-throug-network-ASYNC-NETWORK-IO.html )に関するコメントを見つけました。 5,000行以上の結果は問題を引き起こすことで悪名高いと誰かが言った。これは実際には、Microsoft Dynamics NAVアプリケーションによって内部的に提起された推奨事項のようです。これは、ASYNC_NETWORK_IOの待機時間が長いためにSQLServerが不安定になることで有名です。アプリケーションが発生するエラーメッセージは、「テーブル内のレコード数が最大数5000を超えています。テーブル内のレコード数を減らすようにフィルターを設定します。一度にエクスポートするレコードが多すぎると、システムパフォーマンスに影響を与える可能性があります。」しかし、これは単なる推測です。

  3. SSIS Excel Destinationタスクの場合、ユーザーがTemporary Internet Filesフォルダーに書き込む権限を持っていない場合は、ハングする可能性があります: https://stackoverflow.com/a/23523954/1040437 (繰り返しますが、これを使用して、考えられるすべての理論を1つの場所にまとめようとするので、単なる理論です。)

0
John Zabroski