酿酒厂构建未与 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
也可能有用。
我在我的 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