#postgresql #docker #ecto
#postgresql #docker #ecto
Вопрос:
Недавно я начал изучать Docker. Я настроил контейнер с приложением Phoenix и перенес его базу данных в другой контейнер с Postgres 12.4. Я получал «слишком много ошибок подключения к клиенту», но это исчезло после того, как я увеличил лимит с 10 до 100.
Я вошел в базу данных и обнаружил, что было 11 подключений к базе данных приложения database app. Я не уверен, откуда взялись эти подключения, поскольку я ничего не делал при запуске базы данных, кроме настройки базы данных или выполнения миграции. Что может быть источником этих подключений?
Вот мой Ecto.Настройка репозитория:
# Configure your database
config :discuss, Discuss.Repo,
url: "postgres://postgres:postgres@db:5432/discuss_dev",
username: "postgres",
password: "postgres",
database: "discuss_dev",
hostname: "db",
port: 5432,
show_sensitive_data_on_connection_error: true,
pool_size: 10
Вот мой docker-compose.yaml:
version: '3.6'
services:
db:
environment:
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DATABASE: discuss_dev
POSTGRES_HOST_AUTH_METHOD: trust
image: 'postgres:12-alpine'
restart: always
ports:
- "11005:5432"
expose:
- "11005"
volumes:
- 'pgdata:/var/lib/postgresql/data'
web:
build: .
depends_on:
- db
environment:
MIX_ENV: dev
env_file:
- .env
ports:
- "11001:4000"
expose:
- "11001"
volumes:
- .:/app
volumes:
pgdata:
Комментарии:
1. не могли бы вы поделиться выводом
netstat -nutp | grep 11005
Ответ №1:
Размер вашего пула равен 10, и вы установили другое соединение (предположительно, не через пул), чтобы узнать, сколько у вас подключений. Если пул Ecto стремится установить соединения (я не знаю, так ли это), то легко увидеть, что 10 1 должно быть 11.
Если вы хотите продолжить расследование, pg_stat_activity покажет много информации о каждом соединении, например, с какого IP-адреса оно поступает, что такое application_name и каков текущий или последний выполненный запрос.