2016-08-04 36 views
-2

Wir verwenden den tomcat connection pool für unsere anwendung. Von Zeit zu Zeit wird aus dem Protokoll beobachtet, dass Verbindungen im Pool nicht verfügbar sind. Obwohl der Anwendungsserver selbst nicht gestoppt wird, wird die Benutzeraktion dadurch unterbrochen. Wir fügen folgende Parameter an die Datenquelle .:tomcat connection pool ausgabe

<Resource 
    name=XXXXX 
    type=xxxxx 
    username=xxxxx 
    password=xxxxxx 
    driverClassName=xxxxx 
    maxIdle=2 
    url=xxxxx 
    maxActive=10 
/> 

Frage: Ist es möglich, dass Verbindungspool für bestimmte Dauer leer wird und dann Verbindungen sind wieder zur Verfügung?

+0

Ich hätte gedacht, Sie möchten minIdle –

+0

Die Antwort auf die Frage, die Sie gefragt haben, ist "JA", aber diese Antwort ist wahrscheinlich wertlos, wie Sie bereits aus dem Verhalten Ihres Programms wissen. –

+0

@Scary MinIdle ist standardmäßig auf initialSize, das ist 10 – ravthiru

Antwort

0

Der Verbindungspool wird nicht auf 0 reduziert, es sei denn, alle inaktiven Verbindungen führen zu Validierungsabfragen. Was passiert hier ist, dass Ihre Verbindungen im Leerlauf bis zur maximalen Größe von 2 sind. Inaktive Verbindungen sind in der Regel eine gute Sache zu haben, weil sie das genaue Problem vermeiden, das Sie stoßen; dass es teuer ist, neue Verbindungen zu öffnen.

+0

Hallo John, danke für deine Antwort. Wird es helfen, wenn ich initialSize und minIdle Parameter hinzufüge. – user2647805

+0

Wenn der Verbindungspool bootet, werden initialSize-Verbindungen erstellt. Wenn mehr Verbindungen gleichzeitig angefordert werden, wird es zu maxActive wachsen. Sobald diese Verbindungen inaktiv sind, wird sie auf maxIdle fallen. Sobald diese Leerlaufverbindungen abgelaufen sind, wird sie auf MinIdle zurückgesetzt. Durch das Erhöhen von maxIdle und minIdle bleiben mehr Verbindungen im Leerlauf länger erhalten. Durch das Erhöhen von initialSize wird die Erstellung leerer Verbindungen zum Booten statt auf Anforderung des Benutzers veranlasst. Die Einstellung von minIdle auf initialSize ist ebenfalls ein guter Anfangspunkt. –