处理 erl_child_setup 中的信号

tko*_*wal 5 erlang signals heroku

我在 Heroku 上部署 Elixir/Phoenix 应用程序时遇到问题。当 Heroku 重新启动或停止 dyno 时,它会发送SIGTERM给所有用户进程。Erlang 在应用程序启动时启动 3 个进程:

  • erl_child_setup
  • Erlang 端口映射器守护进程
  • 实际应用

发送SIGTERMerl_child_setup导致 VM 崩溃并生成erl_crash.dump.

发送SIGTERM到所有进程经常用于确保正常关闭。在研究崩溃原因时,我发现人们在停止运行 Erlang 的 docker 容器时遇到了类似的问题。

我的问题是:有没有办法在erl_child_setup获取时正常关闭虚拟机,SIGTERM或者有没有办法指示 Heroku 不发送SIGTERMerl_child_setup

pol*_*per 1

OTP-23.1.4根据报告的错误此 PR ,此问题已修复。