2

ASP.NET Webアプリケーションは、ここ数年展開されています。先週、少し遅いサーバーに移行して、コストを節約しました。

現在、コマンドのタイムアウトが頻繁に発生しています。タイムアウトが期限切れになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません

これは、低速のサーバーが結果を生成するのに時間がかかるという点で理解できます。時間がかかり、タイムアウトが発生します。

SqlClientに長いタイムアウトを設定させるシステム全体の方法はありますか?どこにでもあるため、コードを変更することはできません...複数のデータアクセステクノロジーも使用しています。

たぶん、接続文字列にデフォルトのコマンドタイムアウト設定がありますか?30秒増やすだけです。クエリが返されるまでもう少しお待ちください。

ありがとう

4

3 に答える 3

2

そのクエリの実行計画を見て、それを高速化しようとします。Web アプリケーションでの SQL クエリの場合、30 秒以上は非常に長い時間です。あなたは言う:

クエリが返されるまでもう少しお待ちください。

しかし、すぐに実行できるようになったことで、さらに満足できると思います。すべての適切な結合、インデックスなどがあり、統計などを更新したことが非常に確実な場合は、タイムアウトが唯一の方法である可能性があります。ただし、通常、少しの最適化は、遅いクエリを大幅に高速化するのに大いに役立ちます

于 2010-05-05T13:27:50.110 に答える
0

プロセスの下のアクティビティモニターで見つけた実行中のプロセス(リモートExcel Selectクエリ)を強制終了することで同じ問題を解決しました

SSMS 2008 では、 アクティビティ モニターは管理ノードの下ではなく、ツールバーにあり、インターフェイスも少し変更されていることに注意してください。

そして、このプロセスを強制終了するため、2つの列を追加するテーブル変更スクリプトが正常にコミットされ、実行タイムアウトとは関係なく、ロックの問題だけです

于 2010-10-03T16:58:26.137 に答える
0

接続文字列では、接続タイムアウトのみを指定できます。アプリケーション全体の ADO.NET 設定を設定する他の方法がわかりません。

おそらくいくつかの簡単な修正があります。

  • SQL プロファイラーを 30 分ほど実行し、提案されたインデックスを作成します。
  • データベースから古いレコードをパージする
  • サーバーにRAMを追加する
  • 新しいバージョンの SQL Server をインストールする
于 2010-05-05T11:04:49.227 に答える