У меня есть приложение, которое использует базу данных в нескольких параллельных сеансах (более 1000). В Postgres максимальное количество доступных подключений установлено по умолчанию 100, и я не изменяю это.Hibernate + PostgreSQL Ошибка «слишком много подключений»
Hibernate имеет максимальный размер пула подключений - 20, но приложение, похоже, игнорируется и выбрасывает ошибку «Слишком много соединений».
Таким образом, проблема заключается в том, как обрабатывать более 1000 сеансов, когда доступно только 100? Есть ли очередь или smth, как это возможно?
Я взял случай [2] и изменил '.openSession()' на '.getCurrentSession()'; .. и т. Д., Как там описано. Но никакого эффекта нет. В приложении каждый сеанс создает из разных потоков одновременно (1000 потоков = 1000 сеансов), а '.getCurrentSession() создает новый сеанс в любом случае, как' .openSession() 'делает. В этом случае из 1000 пользователей будет превышено ограничение соединения с db, и ошибка будет сброшена. Вот почему я хочу поставить в очередь. Но Hibernate, похоже, не хочет управлять этим для меня :( – WildDev
Я попытался открыть сеанс один раз и вложил в него threadpool, но, похоже, это плохая идея из-за ошибки 'Hibernate не поддерживает вложенные транзакции' – WildDev
Вы использовали синглтон как есть? http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch01.html#tutorial-firstapp-helpers – aqquadro