質問

数時間正常に動作するサイトを構築していますが、*。asmxおよび* .ashxの呼び出しがタイムアウトになります。

例外は次のとおりです:" Timeout expired。プールから接続を取得する前にタイムアウト期間が経過したこれは、プールされたすべての接続が使用中であり、最大プールサイズに達したために発生した可能性があります。

SubSonicをORMとして使用しています。

問題は、数分ごとに実行され、データベースにヒットするスケジュールされたタスクに基づいていると思われます。 SQL Server 2000の「現在のアクティビティ」を見ると、次のことがわかります。

  • ステータスが「スリープ」の100プロセス
  • 100個のロック

100個のプロセスは、アプリケーション" .Net SqlClient Data Provider"からのものです。コマンドは" AWAITING COMMAND"です。

だから、私はそれが問題だと推測しています。 。しかし、どのようにそれをトラブルシューティングしますか?これは、dbのデッドロック状態のように聞こえますか?すぐに

  

c:\> iisrestart

、すべて順調です(しばらく)。

ありがとう-私はこのようなものに出会ったことがないので、続行する最善の方法がわかりません。

マイケル

役に立ちましたか?

解決

この問題の重複である可能性があります-接続プーリングはサブソニック?

LoadAndCloseReader()の代わりにLoad()でオブジェクトをロードする場合、各接続は開いたままになり、最終的に接続プールを使い果たします。

他のヒント

コレクションでLoad()を呼び出すと、リーダーが開いたままになります-リーダーを閉じたい場合は必ずLoadAndCloseReader()を呼び出してください-またはusingブロックを使用してください。

ソースコードも用意しておくと役立ちます。

Subsonicについては何も知りませんが、データベースの「コンテキスト」が漏れているのでしょうか?データベースリソースがすべて処理された後に破棄されていることを確認します...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top