PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Apache Cayenne / PostgreSQL:troppi client già in errore

Dalla traccia dello stack e dall'esempio di codice sembra che tu non stia riutilizzando lo stack Cayenne (oggetto ServerRuntime), creandone uno nuovo ogni volta. Oltre ad essere lento, questo introduce anche una perdita di risorse. Ogni ServerRuntime contiene il proprio pool di connessioni che non viene chiuso. Quindi prima o poi il server PostreSQL viene sovraccaricato di connessioni aperte.

La soluzione è trasformare ServerRuntime in un singleton con ambito app (ad esempio, renderlo una var statica di AccountsDBruntime) e riutilizzarlo ogni volta che è necessario un nuovo ObjectContext.