Количество подключений к моему контейнеру базы данных docker postgres начинается с 11?

#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:
  

Моя база данных приложений имеет 11 подключений

Комментарии:

1. не могли бы вы поделиться выводом netstat -nutp | grep 11005

Ответ №1:

Размер вашего пула равен 10, и вы установили другое соединение (предположительно, не через пул), чтобы узнать, сколько у вас подключений. Если пул Ecto стремится установить соединения (я не знаю, так ли это), то легко увидеть, что 10 1 должно быть 11.

Если вы хотите продолжить расследование, pg_stat_activity покажет много информации о каждом соединении, например, с какого IP-адреса оно поступает, что такое application_name и каков текущий или последний выполненный запрос.