【问题标题】:Distillery build not connecting with postgresql elixir phoenixDistillery build 未与 postgresql elixir phoenix 连接
【发布时间】:2018-08-10 07:19:35
【问题描述】:

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

iex -S mix phx.server

应用程序运行,一切都与数据库连接。但构建版本未与数据库连接。 (我认为除了为 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}]}]}].

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

【问题讨论】:

  • 问题不在于它有错误的数据库设置,问题是您的生产数据库不知何故被用户连接超载,消息中清楚地说明了这一点。你拥有数据库吗?可以体检吗?至少重启一下服务器?
  • 数据库在服务器本地。如您所见postgres://localhost/evercam_dev 是的,我拥有数据库。并且没有其他应用程序尝试连接它
  • 这通常意味着您没有正确断开连接,PostgeSQL 希望您断开客户端连接。目前简单的服务器重启应该会有所帮助。
  • 我做了但结果一样,我什至重新启动了整个服务器。
  • 啊。我想我已经发现了:您的生产 ecto 有一个不懒惰的 80+100 工人池,默认 PostgreSQL max_connections 是 AFAIR 100。尝试减少 ecto 的池大小或增加 max_connections postgresql.conf 到 200+。

标签: elixir phoenix-framework distillery


【解决方案1】:

这是因为您的应用程序有两个存储库,它们都使用非惰性连接池,总大小为 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

This answer 也可能有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多