TLDR Connection pooling для RDS-PostgreSQL с помощью terraform by Andrew from Mad Devs
Как отодвинуть проблему недостаточного размера Posgres RDS-инстанса и сэкономить деньги.
Published in
1 min readAug 17, 2018
- Не секрет, что Postgres очень не любит большое количество одновременных соединений.
- У нас пришла пора апгрейда инстанса в связи с нехваткой памяти из-за over 1k одновременных подключений к БД.
- Docker образ с PgBouncer.
- На базе него — сервис в ECS-кластере.
- Для большей производительности мы используем
"networkMode": "host"
. Однако, внимание — ECS не сможет запустить два таких контейнера на одном ec2. Для такого статичного сервиса, как PgBouncer, нас устраивает. - Как единую точку входа в наш сервис и балансировки используем Network Load Balancer — новый AWS сервис работающий на 4-ом уровне OSI. Но на него нельзя Security Groups назначить =(
Запустив на двух c4.large инстансах PgBouncer, и, спрятав их за NLB, мы потратили $180 не считая трафик, но сэкономили отложив апгрейд RDS-инстанса на порядок больше, высвободив около 40GB оперативной памяти, которая была занята бэкендами постгреса, держащими соединения.
okmeter.io — мониторинг, который сам всё знает про Postgres и PgBouncer.