BeiträgeHow-To'sInterBaseRAD Studio

FireDAC Connection Pooling mit RAD Server verwenden

whatisconnectionpooling

Connection Pooling Bedeutung

Ein Verbindungspool ist ein Cache von Datenbankverbindungen, der verwaltet wird, damit die Verbindungen wiederverwendet werden können, wenn zukünftige Anforderungen an die Datenbank erforderlich sind. Verbindungspools werden verwendet, um die Leistung beim Ausführen von Befehlen in einer Datenbank zu verbessern. Das Öffnen und Aufrechterhalten einer Datenbankverbindung für jeden Benutzer, insbesondere Anfragen an eine dynamische datenbankgesteuerte Anwendung, ist kostspielig und verschwendet Ressourcen. Beim Verbindungspooling wird eine Verbindung nach dem Erstellen in den Pool gestellt und erneut verwendet, sodass keine neue Verbindung hergestellt werden muss.

Sie können auch eine maximale Anzahl von Verbindungen definieren, die ein Pool erstellt, und dies kann sehr interessant sein, um die Anzahl der erforderlichen Datenbanklizenzen zu reduzieren. Wenn in einem solchen Fall der Pool das Limit erreicht und eine neue Anfrage eintrifft, wird diese Anfrage nicht verarbeitet, wenn eine freie Verbindung nicht vor einem bestimmten zuvor definierten Timeout verfügbar gemacht wird.

Der Schlüssel für ein Verbindungspooling mit begrenzten Datenbankverbindungen besteht darin, die ideale Anzahl für diesen Pool basierend auf der endgültigen Anzahl von Benutzern und der Anwendungsarchitektur zu definieren. Mehr dazu im Beispiel unten.

Der FireDAC Connection Pooling-Mechanismus

Der Verbindungs-Pooling-Mechanismus von FireDAC ist ziemlich einfach zu verwenden und kann aktiviert werden, indem Sie nur eine zusätzliche Verbindungseigenschaft Ihrer Verbindung festlegen (Pooled=True).

Natürlich glänzt die Pooling-Funktion in Multi-Thread-Anwendungen, bei denen mehrere kurze Aufgaben gleichzeitig (oder fast) ausgeführt werden und für jede dieser Aufgaben eine Verbindung hergestellt werden muss. Wenn Sie die Polling-Funktion verwenden, wird die Verbindung bereits hergestellt und wartet auf die Aufgabe, was zu einer viel schnelleren Verarbeitungszeit und einem geringeren Ressourcenverbrauch führt.

Für erweiterte Szenarien gibt es neben dem „Pooled“-Parameter drei weitere Parameter, die berücksichtigt werden können:

Parameter Parameter Beispiel
POOL_CleanupTimeout Die Zeit (ms), bis FireDAC die Verbindungen entfernt, die länger als die POOL_ExpireTimeout-Zeit nicht verwendet wurden. Der Standardwert ist 30000 ms (30 s). 3600000
POOL_ExpireTimeout Die Zeit (ms), nach der die inaktive Verbindung aus dem Pool gelöscht und zerstört werden darf. Der Standardwert ist 90000 ms (90 s). 600000
POOL_MaximumItems Die maximale Anzahl von Verbindungen im Pool. Wenn die Anwendung mehr Verbindungen erfordert, wird eine Ausnahme ausgelöst. Der Standardwert ist 50. 100

FireDAC ermöglicht die Verwendung von „dauerhaften“ Verbindungen (in der .ini-Datei von FireDAC gespeichert), „privaten“ Verbindungen (im Speicher für eine Anwendung verfügbar) und „temporären“ Verbindungen (nicht gespeichert und nicht benannt oder von FDManager verwaltet). Weitere Informationen zum Definieren und Herstellen einer Verbindung (mit oder ohne Pool) finden Sie in der folgenden Dokumentation:

Verbindungspooling mit RAD Server (EMS)

Für jede ernsthafte Backend-Anwendung, einschließlich RAD Server, ist es fast zwingend erforderlich, einen Pooling-Mechanismus zu haben, wenn die Anzahl der Aufrufe Ihrer Anwendung zunimmt. Unser Beispiel demonstriert die Verwendung einer „privaten“ Verbindung, die durch den FDManager definiert wird. Natürlich können Sie auch bereits in der .ini-Datei von FireDAC definierte Verbindungen wiederverwenden oder sogar die .ini-Datei über den FDManager laden und sie ändern, indem Sie die Verbindungspooling-Parameter hinzufügen, die für Ihre Serveranwendung spezifisch, aber nicht so nützlich sind eine Desktop-App.

Unsere Demo-App wurde mit dem RAD Server Wizard ( https://docwiki.embarcadero.com/RADStudio/en/Creating_a_RAD_Server_Package ) und unter Verwendung der kürzlich hinzugefügten EMSDataSetResource ( https://docwiki.embarcadero.com/RADStudio/en/ ) erstellt. Using_RAD_Server_Components und https://blogs.embarcadero.com/using-emsdatasetresource-component-with-rad-server/ ), aber dasselbe gilt für explizit definierte RAD Server-Endpunkte.

Es ist wichtig zu beachten, dass pro Anwendungsinstanz nur eine FDManager- Instanz vorhanden sein kann, sodass Sie feststellen werden, dass der FDManager im Initialisierungsabschnitt unserer EMS-Ressource wie folgt erstellt wird:

untitled-3

Führen Sie einen Stresstest mit unserem Demoprojekt durch

Das folgende Video zeigt den Pooling-Mechanismus, der mit JMeter mit einer Gesamtlast von 100 Benutzern getestet wird :

Als zusätzlicher Tipp: Wenn Ihre RAD Server-Anwendung aus mehreren Paketen besteht, können Sie dennoch den Pooling-Mechanismus verwenden. Alles, was Sie tun müssen, ist, eine RAD Server-Ressource zu erstellen, die darauf abzielt, nur die Verbindungspooling-Konfiguration durch den FDManager zu definieren, und sicherzustellen, dass Sie diese Ressource als erste in Ihrer Bereitstellungsumgebung laden.

 


Coding Boot Camp

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Kommentieren

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

IN THE ARTICLES