by lucabaldini » 20 January 2014, 16:11
Da quel che vedo sembra che la connessione non venga mai "chiusa" (ovvero rilasciata nel pool).
Bisognerebbe guardare il tuo progetto per capire perché il tuo WS non rilascia le connessioni al pool.
Senza vedere il progetto non capisco cosa succeda... In teoria dovrebbe funzionare così: l'apertura della connessione è automatica e viene fatta appena una query viene eseguita. L'apertura contatta il nostro pool e cerca una connessione da utilizzare. Se non c'è ne viene creata una nuova e fornita al WS. Il WS la usa e quando occorre (poi ti spiego), la rilascia al pool ancora aperta. A questo punto, se un nuovo metodo vuole fare una query chiede al pool che fornisce quella di prima che viene riutilizzata, poi ri-lasciata al pool.
Dal tuo log sembra che le connessioni non vengano mai chiuse e questo è il problema.
In una applicazione web tutte le connessioni ai DB vengono automaticamente chiuse alla fine di ogni richiesta del browser. Per i WS non è così semplice, perché non c'è un "fine richiesta del browser". L'entry point di un WS, infatti, è una chiamata ad un metodo pubblico dell'unica classe pubblica del WS. Quando esci da quel metodo pubblico, In.de chiude tutte le connessioni aperte automaticamente (puoi verificare nel codice di un qualunque metodo pubblico della classe pubblica del WS).
Ora, se per un qualunque motivo, il codice segue un percorso che non chiude le connessioni al DB, allora succede quel che dici... le connessioni non vengono chiuse (che vuol dire che non vengono rilasciate al pool ma ne vengono aperte sempre delle nuove) può succedere quel che descrivi...
Quindi occorrerebbe guardare il tuo WS (in particolare tutti i metodi pubblici della classe pubblica) e capire se c'è un percorso di codice che non termina con una CloseDBConnections che tu hai personalizzato.
Questo dovrebbe essere il motivo.