Från stackspårningen och kodexemplet ser det ut som att du inte återanvänder Cayenne-stacken (ServerRuntime-objektet), utan skapar en ny varje gång istället. Förutom att det är långsamt, introducerar detta också en resursläcka. Varje ServerRuntime har sin egen anslutningspool som du inte stänger av. Så förr eller senare är PostreSQL-servern överfull av öppna anslutningar.
Lösningen är att förvandla ServerRuntime till en app-omfattad singleton (t.ex. göra den till en statisk variant av AccountsDBRuntime) och återanvända den när du behöver en ny ObjectContext.