От проследяването на стека и примера на кода изглежда, че не използвате повторно стека на Cayenne (обект на ServerRuntime), а вместо това създавате нов всеки път. Освен че е бавно, това води и до изтичане на ресурси. Всеки ServerRuntime притежава собствен пул от връзки, който не изключвате. Така че рано или късно PostreSQL сървърът е препълнен с отворени връзки.
Решението е да превърнете ServerRuntime в сингълтон с обхват на приложение (напр. да го направите статична променлива на AccountsDBRuntime) и да го използвате отново, когато имате нужда от нов ObjectContext.