Ликеро-водочный завод, не связанный с эликсиром postgresql феникс
Я перешел с exrm
в distillery
в сборке релиза для моего проекта Phoenix. Все работает нормально. когда я делаю
iex -S mix phx.server
Приложение запускается и все связывается с БД. но выпуск сборки не соединяется с базой данных. (Я думаю, что выполнение вышеупомянутой команды кроме сборки ее получающих значения dev для 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}]}]}].
в чем здесь проблема? Это не связано с базой данных, что я делаю не так?
1 ответ
Причиной этого является то, что ваше приложение имеет два репозитория, оба используют не ленивые пулы соединений, общим размером 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
Этот ответ также может быть полезен.