如何解决到我的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:
解决方法
您的池大小为10,并且您建立了另一个连接(大概不是通过该池),以便查看您有多少个连接。如果Ecto的池管理者渴望建立连接(我不知道是否建立连接),那么很容易看到10 + 1应该是11。
如果您想进一步调查,pg_stat_activity将显示很多有关每个连接的信息,例如它来自什么IP地址,application_name是什么以及当前或上次执行的查询是什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。