【发布时间】:2020-03-12 17:55:30
【问题描述】:
我的 Phoenix 应用程序达到了 Erlang VM 的最大进程限制,为特定的 Phoenix 应用程序指定 erl 的自定义选项(如 +P)的最佳方法是什么(或者更好,仅适用于 MIX_ENV=PROD)?有没有办法通过应用程序的配置文件来做到这一点?或者如果没有,也许当我运行“mix phoenix.server”时?
【问题讨论】:
我的 Phoenix 应用程序达到了 Erlang VM 的最大进程限制,为特定的 Phoenix 应用程序指定 erl 的自定义选项(如 +P)的最佳方法是什么(或者更好,仅适用于 MIX_ENV=PROD)?有没有办法通过应用程序的配置文件来做到这一点?或者如果没有,也许当我运行“mix phoenix.server”时?
【问题讨论】:
您可以使用elixir 运行带有--erl 标志的应用程序:
elixir --erl "+P 10000000" -S mix phoenix.server
如果你想要一个 shell,你可以使用 iex 代替:
iex --erl "+P 10000000" -S mix phoenix.server
这里是elixir命令用法的副本。
用法:elixir [选项] [.exs 文件] [数据]
-v 打印版本并退出
-e "command" 评估给定的命令 ()
-r "file" 需要给定的文件/模式 ()
-S "script" 查找并执行给定的脚本
-pr "file" 需要并行的给定文件/模式 ()
-pa "path" 将给定路径添加到 Erlang 代码路径 ()
-pz "path" 将给定的路径附加到 Erlang 代码路径 ()
--app "app" 启动给定的应用程序及其依赖项 ()
--erl "switches" 传递给 Erlang 的开关 (*)
--name "name" 为分布式节点创建并分配一个名称
--sname "name" 为分布式节点创建并分配一个短名称
--cookie "cookie" 为这个分布式节点设置一个cookie
--hidden 创建一个隐藏节点
--detached 启动与控制台分离的 Erlang VM
--werl 使用 Erlang 的 Windows shell GUI(仅限 Windows)
--no-halt 执行后不停止 Erlang VM** 标有 (*) 的选项可以多次给出
** .exs 文件后给出的选项或 -- 传递给执行的代码
** 可以使用 ELIXIR_ERL_OPTIONS 或 --erl 将选项传递给 Erlang 运行时
如果您使用的是exrm,那么您也可以在vm.args 文件https://hexdocs.pm/exrm/release-configuration.html 中提供此信息
【讨论】: