TLDR Connection pooling для RDS-PostgreSQL с помощью terraform by Andrew from Mad Devs

Как отодвинуть проблему недостаточного размера Posgres RDS-инстанса и сэкономить деньги.

pavel trukhanov
some-tldrs-ru
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.

--

--