Перейти к содержимому
9 / 15

Зачем приложению пул соединений к базе и как выбрать его размер?

Открыть соединение к базе — это TCP-рукопожатие, TLS и аутентификация, а в PostgreSQL ещё и порождение отдельного серверного процесса. На каждый запрос это непозволительно дорого, поэтому соединения держат открытыми в пуле и переиспользуют. Размер пула — не «чем больше, тем лучше»: у базы есть жёсткий лимит max_connections, и сотни лишних соединений не ускоряют её, а замедляют переключением контекста и конкуренцией за блокировки. Считать надо от базы вниз: общее число соединений равно числу инстансов × число процессов × размер пула, и оно должно уместиться в лимит с запасом. Разумный ориентир для пула — небольшое число, соизмеримое с числом ядер базы; когда клиентов слишком много, между ними и базой ставят PgBouncer.

Зачем приложению пул соединений к базе и как выбрать его размер? | JScriptiser