微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

到我的docker postgres数据库容器的连接数开始于11?

如何解决到我的docker postgres数据库容器的连接数开始于11?

我最近开始学习Docker。我使用Phoenix应用程序设置了一个容器,并使用Postgres 12.4将其数据库迁移到了另一个容器。我收到“太多的客户端连接错误”,但是在将限制从10增加到100之后,这种情况就消失了。

我进入数据库,发现到该应用程序的数据库应用程序有11个数据库连接。我不确定这些连接来自何处,因为在数据库开始时我没有做任何事情,除了设置数据库或执行迁移外。这些连接的来源可能是什么?

这是我的Ecto.Repo设置:

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

My application database has 11 connections

解决方法

您的池大小为10,并且您建立了另一个连接(大概不是通过该池),以便查看您有多少个连接。如果Ecto的池管理者渴望建立连接(我不知道是否建立连接),那么很容易看到10 + 1应该是11。

如果您想进一步调查,pg_stat_activity将显示很多有关每个连接的信息,例如它来自什么IP地址,application_name是什么以及当前或上次执行的查询是什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。