Задать вопрос
NikFaraday
@NikFaraday
Student full-stack Developer

Как решить ошибку пула соединений к PostgreSql?

Есть PostgreSql на AWS. Коннекшн к ней делается через DbConnecrionFactory, что-то типа такого:

using (IDbConnection dbConnection = _dbConnectionFactory.NewNpgSqlConnection())
{
   // Something
}


Проблема в том, что при быстрых запросах вылетакт ошибка:
Npgsql.PostgresException (0x80004005): 53300: remaining connection slots are reserved for non-replication superuser connections


Когда возникает ошибка? При быстрой перезагрузке сайта, при быстрых и частых (один за другим) переходах между страницами и подобных действиях

Может ли это быть связано с тем, что подключение к БД делает внутри using, а не, допустим, через какой-то GenericRepository внутри DI (Scoped)? Но при переходе между страницами делается только один запрос к БД, по этому количество запросов не должно меняться

Я запутался немного, поправьте, если ошибаюсь. Как мне решить эту проблему?
  • Вопрос задан
  • 693 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Пока выглядит, что пул коннектов вы не используете вообще, а открываете по новому соединению на каждом действии. Проверьте документацию к этой библиотеке, есть ли встроенный пул коннектов и как именно им нужно пользоваться.

remaining connection slots are reserved for non-replication superuser connections

означает, что у базы заняты все возможные max_connections - superuser_reserved_connections, поэтому не может принимать больше коннектов, пока не отключится кто-то из подключившихся ранее (либо не будет обнаружен обрыв tcp сессии и поэтому коннект будет освобождён).
Ответ написан
SpacePurr
@SpacePurr
c#, wpf
А что у вас указано в ConnectionString к базе? Может там просто MaxPoolSize у вас стоит в 10 коннектов.
Ну либо проверить количество доступных соединение в самой базе SHOW max_connections;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы