connection-pooling

In der Softwareentwicklung ist ein Verbindungspool ein Cache für Verbindungen, die verwaltet werden, sodass die Verbindungen wiederverwendet werden können, wenn zukünftige Anforderungen an die Ressource erforderlich sind.
1
Antwort

Wie können Redis-Verbindungen am besten mit ServiceStack verwaltet werden?

Ich arbeite an einigen .NET-Webanwendungen, die Redis zum Caching zusammen mit dem Redis-Client von ServiceStack verwenden. In allen Fällen habe ich Redis auf demselben Rechner laufen. Ich habe beide BasicRedisClientManager und PooledRedisCli...
23.09.2013, 16:01
5
Antworten

Grundlegendes Problem beim Verbindungs-Pooling von Tomcat

Ich verwende Tomcat 7 Verbindungspooling (als Tomcat-Ressource in server.xml und context.xml) in einer Webanwendung und es funktioniert. Meine Frage ist: Ist es möglich Tomcat zu "sagen" / "zu zwingen", den Verbindungspool nach der Erstellung z...
03.04.2012, 06:22
1
Antwort

SqlConnection vs Sql Sitzung. Stimmen ihre Lebenszeiten überein?

Ich möchte einige Einstellungen für die SQL-Sitzungsebene für bestimmte Prozesse in meiner c# -App anwenden. Ich möchte zum Beispiel DEADLOCK_PRIORITY für einige Hintergrundprozesse auf LOW setzen. Die Fragen sind: Wenn ich e...
17.05.2013, 15:49
6
Antworten

WebApp (Tomcat-jdbc) Gebündelte DB-Verbindungsabbruch-Ausnahme

Ich habe SO schon eine Weile durchsucht und dabei meinen Hut gekaut, aber finde keine genaue Übereinstimmung mit meinem Problem. Kurz gesagt, ich erhalte nach 60 Sekunden Inaktivität eine hervorragende Stapelverfolgung (org.apache.tomcat.jdbc.p...
29.10.2012, 20:24
4
Antworten

Welche Best Practices zum Verwalten von Datenbankverbindungen in .NET gelten?

Was die beste Vorgehensweise für die Verwaltung von Datenbankverbindungen in einer .NET-Anwendung angeht - ich weiß, dass es im Allgemeinen nicht gut ist, ein Verbindungsobjekt zu umgehen. Allerdings habe ich einige besondere Kuriositäten:...
15.07.2010, 18:41
5
Antworten

Bewährtes Verfahren für die Wiederverwendung von SqlConnection

Ich bin von Java Erfahrung gekommen und versuche mit C # anzufangen. Ich habe gelesen SqlConnection SqlCommand SqlDataReader IDisposable und ich kann verstehen, dass die beste Vorgehensweise zum Herstellen einer Verbindung zu einem Die DB umsc...
29.12.2014, 15:57
3
Antworten

Gleichzeitiger DB-Verbindungspool in Haskell

Ich bin ein Java-Programmierer, der Haskell lernt. Ich arbeite an einer kleinen Web-App, die Happstack verwendet und über HDBC mit einer Datenbank kommuniziert. Ich habe Funktionen und exec geschrieben und verwende sie wie folgt: %Vor%...
17.07.2009, 06:28
3
Antworten

___ answer1058601 ___

Nein, es ist nicht ineffizient, viele %code% -Objekte zu erstellen und jedes einzelne zu schließen, wenn Sie fertig sind. Das ist genau das Richtige. Lassen Sie das .NET Framework Connection Pooling seine Arbeit machen - versuchen Sie es nicht selbst. Sie müssen nichts spezielles tun, um das Verbindungspooling zu aktivieren (obwohl Sie es deaktivieren können, indem Sie %code% in Ihrer Verbindungszeichenfolge setzen).

Es gibt viele Dinge, die schief gehen könnten, wenn Sie versuchen, die Verbindung selbst zu cachen. Sag einfach nein:)

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___ tag123connectionpooling ___ In der Softwareentwicklung ist ein Verbindungspool ein Cache für Verbindungen, die verwaltet werden, sodass die Verbindungen wiederverwendet werden können, wenn zukünftige Anforderungen an die Ressource erforderlich sind. ___ answer8772652 ___

In meiner jüngsten Erfahrung, wenn Sie diesen Code verwenden:

%Vor%

hat einen Fehler und schließt die Verbindung nicht explizit, sie wird nicht geschlossen oder in den Pool zurücküberprüft. Verwenden Sie also einen Catch- oder Finally-Block, um die Verbindung zu schließen

    
___ qstntxt ___

Wir haben einen Clientcode, der die SqlConnection-Klasse in .NET verwendet, um mit einer SQLServer-Datenbank zu kommunizieren. Es schlägt mit diesem Fehler zeitweise fehl:

"ExecuteReader benötigt eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist Closed"

Die "temporäre" Lösung besteht darin, den Prozess neu zu starten, danach funktioniert alles - aber das ist offensichtlich nicht zufriedenstellend.

Der Code speichert einen Cache für SqlConnection-Instanzen, einen für jede Datenbank.

Wir würden den Code gerne neu schreiben, aber bevor ich das tue, muss ich ein paar Dinge wissen:

Meine erste Frage lautet: Ist es ineffizient, SqlConnection-Objekte wiederholt zu verbinden und zu trennen, oder führt die zugrunde liegende Bibliothek das Verbindungs-Pooling für uns durch?

%Vor%

Da unser Code nicht tut, scheint die wahrscheinliche Ursache des Problems darin zu liegen, dass während der "Lebensdauer" der Verbindung, die die Verbindung verursacht, etwas mit der zugrunde liegenden SQLServer-Datenbank passiert geschlossen ...

Wenn es sich herausstellt, dass es sich lohnt, SqlConnection-Objekte zu "cachen", was ist der empfohlene Weg, um alle Fehler zu behandeln, die einfach durch "Wiederverbinden" mit der Datenbank gelöst werden können. Ich spreche über Szenarien wie:

  • Die Datenbank wird offline genommen und wieder online geschaltet, aber der Clientprozess hatte während dieses Vorgangs keine offenen Transaktionen.
  • Die Datenbank wurde "getrennt" und dann "erneut verbunden"

Ich bemerke, dass es eine "State" -Eigenschaft in SqlConnection gibt ... gibt es eine geeignete Möglichkeit, das abzufragen?

Schließlich habe ich eine Test-SQLServer-Instanz mit vollen Zugriffsrechten eingerichtet: Wie kann ich den genauen Fehler reproduzieren? "ExecuteReader benötigt eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist Closed"

    
___ answer1058640 ___

Sie sollten Verbindungspooling für Ihre Verbindungszeichenfolge aktivieren . In diesem Fall fügt die Laufzeitumgebung Ihre Verbindungen zum "Pool" zurück, wenn Sie sie schließen, anstatt wirklich zu disconnecting. Wenn eine 'neue' Verbindung aus dem Pool genommen wird, wird sie zurückgesetzt (dh sp_reset_connection wird aufgerufen) und dann Ihrer Anwendung als brandneue, frische Verbindung präsentiert. Der Pool behandelt solche Fälle transparent, als ob die Verbindung im Leerlauf im Pool geschlossen wäre.

Die Kosten für das Erstellen einer neuen Verbindung von Grund auf neu sind von Bedeutung, da die Authentifizierung mehrere Roundtrips zwischen Client und Server erfordert (abhängig von der Authentifizierungsmethode und SSL-Einstellungen kann es im besten Fall 1 Roundtrip vs. etwa 10 sein ).

Und um Ihre Frage zu beantworten, werfen Sie einen Blick auf die OnStateChange Ereignis, wenn sich ihr Status ändert, aber Sie sollten sich nicht darum kümmern, wenn Sie das Pooling verwenden.

    
___

Wir haben einen Clientcode, der die SqlConnection-Klasse in .NET verwendet, um mit einer SQLServer-Datenbank zu kommunizieren. Es schlägt mit diesem Fehler zeitweise fehl: "ExecuteReader benötigt eine offene und verfügbare Verbindung. Der akt...
29.06.2009, 14:20
2
Antworten

Unterstützt WCF4 (.NET Framework 4) das Clientverbindungs-Pooling?

Die Frage lautet also, ob WCF4 Client-Verbindungs-Pooling zu WCF-Service aufruft. Zum Beispiel haben wir ASP.NET-Anwendung als Client und Service (auf separaten Rechnern). Dann irgendwo im Code haben wir so etwas: %Vor% Nehmen wir an, wir ha...
01.11.2011, 10:05
2
Antworten

Wie konfiguriere ich HikariCP und Dropwizard / Coda-Hale Metriken in Spring Boot-Anwendung

Wenn Sie die Anweisungen im HikariCP-Wiki lesen, um die Dropwizard-Metriken zu aktivieren, müssen Sie lediglich eine MetricsRegistry-Instanz in HikariConfig oder HikariDatasource konfigurieren. Das Problem ist, dass im Spring Boot die gesamte Ko...
19.02.2015, 19:29