Bei einer bestimmten Datenbank tritt gelegentlich unter mäßiger Last der folgende Fehler auf.
"System.InvalidOperationException: Die Zeitüberschreitung ist abgelaufen. Die Timeout-Periode ist abgelaufen, bevor eine Verbindung aus dem Pool hergestellt werden konnte. Dies kann aufgetreten sein, weil alle gepoolten Verbindungen in Gebrauch waren und die maximale Poolgröße erreicht wurde."
Ich habe den Code durchkämmt, und wir schließen die Verbindungen in finally-Blöcken, wie es sein sollte, außer in einigen wenigen Fällen, die wir festgestellt haben, dass sie sehr selten aufgerufen werden. Wir werden diese Teile des Codes in unserer nächsten Version beheben, aber um das aktuelle Produktionsproblem zu lösen, schlage ich vor, die maximale Poolgröße auf 300 zu erhöhen. Die maximale Anzahl der gleichzeitigen Benutzer, die wir derzeit erleben, liegt bei 110, was offensichtlich über der Standard-Poolgröße (100) liegt.
Ich schlage auch vor, sicherzustellen, dass alle unsere Verbindungszeichenfolgen zu einer bestimmten SQL Server-Instanz identisch sind, um die unnötige Erstellung mehrerer Verbindungspools zu vermeiden. Ich hoffe, wir können die USE [Datenbank] Anweisung vor unseren eigentlichen SQL-Abfragen, wenn wir innerhalb einer einzelnen SQL Server-Instanz die Datenbank wechseln müssen.
Habt ihr irgendwelche Ideen, Hinweise, Vorschläge oder Probleme, auf die wir achten sollten?