PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Apache Cayenne / PostgreSQL:muitos clientes já estão com erro


A partir do rastreamento de pilha e do exemplo de código, parece que você não está reutilizando a pilha Cayenne (objeto ServerRuntime), criando uma nova sempre. Além de ser lento, isso também introduz um vazamento de recursos. Cada ServerRuntime mantém seu próprio pool de conexão que você não encerra. Então, mais cedo ou mais tarde, o servidor PostreSQL é sobrecarregado com conexões abertas.

A solução é transformar ServerRuntime em um singleton com escopo de aplicativo (por exemplo, torná-lo um var estático de AccountsDBRuntime) e reutilizá-lo sempre que precisar de um novo ObjectContext.