酿酒厂构建未与 postgresql elixir phoenix 连接

Distillery build not connecting with postgresql elixir phoenix

我在我的 phoenix 项目的构建版本中从 exrm 切换到 distillery。一切正常。当我这样做时

iex -S mix phx.server

应用程序运行并且一切都与数据库连接。但是构建版本没有连接到数据库。 (我认为除了构建其获取 db 的开发值之外,执行上述命令。)

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}]}]}].

这里有什么问题?它没有与数据库连接,我做错了什么?

这是因为您的应用程序有两个总大小为 180 的存储库,均未使用惰性连接池。

PostgreSQL 的默认设置是 100 个并发客户端连接。

你有两个选择:

postgresql.conf 中的 max_connections 设置增加到 200

max_connections = 200
shared_buffers = 50MB

减少ecto个连接池

config :ymy_app, EvercamMedia.Repo,
  adapter: Ecto.Adapters.Postgres,
  ...
  pool_size: 40

也可能有用。