Frage

Ich baue eine Website, die für ein paar Stunden in Ordnung läuft, aber dann * .asmx und * .ashx Anrufe Timing beginnen.

Die Ausnahme ist: „. Timeout abgelaufen Die Timeout-Zeit vor verstrichene eine Verbindung aus dem Pool zur Erlangung dieses eventuell aufgetreten, weil alle zusammengefassten Verbindungen waren im Einsatz und maximale Poolgröße erreicht wurde“

ich SubSonic als ORM bin mit.

Ich vermute, dass das Problem auf einem geplanten Task basiert, die alle paar Minuten läuft und trifft auf die Datenbank. Wenn ich in SQL Server 2000 die „Aktuelle Aktivität“ sehen, sehe ich es:

  • 100 Prozesse mit dem Status "schlafender"
  • 100 Schlösser

Die 100 Prozesse sind von der Anwendung ".Net SqlClient Data Provider" und der Befehl "WARTEN AUF COMMAND".

So vermute ich, dass das Problem ist. . aber wie kann ich es beheben? Klingt das wie ein Deadlock in der db? Sobald ich

  

c: \> iisrestart

, alles ist in Ordnung (für eine Weile).

Danke -. Ich habe nur noch nie so etwas wie dieses gestoßen und bin nicht sicher, der beste Weg, um fortzufahren

Michael

War es hilfreich?

Lösung

Es könnte ein Duplikat dieses Problem sein - Ist Verbindungspooling richtig funktioniert in Subsonic?

Wenn Sie Objekte mit Load () statt LoadAndCloseReader () geladen werden, wird jede Verbindung offen gelassen werden, und schließlich werden Sie den Verbindungspool erschöpfen.

Andere Tipps

Wenn Sie Load () auf eine Sammlung nennen es den Reader geöffnet lassen - stellen Sie sicher, rufen LoadAndCloseReader (), wenn Sie den Leser wollen weg schließen -. Oder unter Verwendung eines Block verwenden

Es hilft auch etwas Quellcode zu haben.

Ich weiß nichts über Subsonic, aber vielleicht ‚Kontexte‘ Sie sind undicht Datenbank? Ich würde überprüfen, dass jede Datenbankressource angeordnet ist, wird, nachdem Sie damit fertig ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top