在phoenix项目的构建版本中,我从exrm
切换到distillery
。一切正常。当我这样做
iex -S mix phx.server
应用程序运行,所有内容都与DB连接。但是构建版本未与数据库连接。 (我认为除了构建命令以获取db的dev值之外,还可以执行上述命令。)
2018-08-10 08:59:19.160 [error] Postgrex.Protocol (#PID<0.2803.0>) failed to connect: ** (Postgrex.Error) FATAL 53300 (too_many_connections): remaining connection slots are reserved for non-replication superuser connections
当我看到/opt/evercam_media/releases/1.0.1/sys.config
文件时,它为我提供了用于数据库连接的正确的数据库值
{mode,prod}]},
{'Elixir.EvercamMedia.Repo',
[{adapter,'Elixir.Ecto.Adapters.Postgres'},
{types,'Elixir.EvercamMedia.PostgresTypes'},
{url,<<"postgres://localhost/evercam_dev">>},
{socket_options,[{keepalive,true}]},
{timeout,60000},
{pool_timeout,60000},
{pool_size,80},
{lazy,false},
{ssl,true}]},
{'Elixir.EvercamMedia.SnapshotRepo',
[{adapter,'Elixir.Ecto.Adapters.Postgres'},
{url,<<"postgres://localhost/evercam_dev">>},
{socket_options,[{keepalive,true}]},
{timeout,60000},
{pool_timeout,60000},
{pool_size,100},
{lazy,false},
{ssl,true}]}]}].
这里是什么问题?它没有与数据库建立连接,我在做什么错?
答案 0 :(得分:0)
这是因为您的应用程序有两个存储库,两个存储库都使用非延迟连接池,总大小为180。
PostgreSQL的默认设置是100个并发客户端连接。
您有两个选择:
将max_connections
中的postgresql.conf
设置增加到200,例如
max_connections = 200
shared_buffers = 50MB
减少ecto
连接池
config :ymy_app, EvercamMedia.Repo,
adapter: Ecto.Adapters.Postgres,
...
pool_size: 40
This answer也可能有用。