僵尸进程或类似的东西?
Zombie processes or something similar?
我有一个凤凰应用程序。有时我会遇到这样的情况:
$ ps aux
===>
user1 67297 0.0 0.2 13240 1860 - S Thu07 0:03.00 /usr/home/user1/my_projects/project1/erts-10.3.5.19/bin/epmd -daemon
那我想办法阻止它
$ MIX_ENV=prod ./bin/project1 stop
--rpc-eval : RPC failed with reason :nodedown
为什么首先说它宕机了?
尽管如此,它仍然会保持:
$ ps aux
===>
user1 67297 0.0 0.2 13240 1860 - S Thu07 0:03.00 /usr/home/user1/my_projects/project1/erts-10.3.5.19/bin/epmd -daemon
怎么了?
P.S。通常,有 3 个左右的进程与一个项目有关,尽管在我的问题中只有 1 个。在这种情况下,我已经通过“kill”手动杀死了其中的 2 个。但是,这并没有解决这个问题。
即Erlang Port Mapper Daemon,Erlang/Elixir程序在与其他节点建立连接时使用的小型名称服务器。
The daemon is started automatically by command erl(1) if the node is
to be distributed and no running instance is present.
因此当您启动 Phoenix 应用程序时它会自动启动。
不需要杀死那个进程,你可以保留它运行。
如果您运行这是一个版本,可能是因为版本 cookie 不是静态的并且在新部署后它发生了变化,或者版本名称配置不正确。
在生产环境中,我建议设置 RELEASE_COOKIE
环境变量。至于发布名称,您可以通过 ps auxwww
检查启动参数来确保将其设置为有意义的内容。 beam.smp 进程应该设置 SNAME
或 NAME
。
简而言之,如果您配置了静态发布 cookie 和静态 sname 或名称,那么 rpc/epmd 调用应该能够找到您的 运行 节点。
我有一个凤凰应用程序。有时我会遇到这样的情况:
$ ps aux
===>
user1 67297 0.0 0.2 13240 1860 - S Thu07 0:03.00 /usr/home/user1/my_projects/project1/erts-10.3.5.19/bin/epmd -daemon
那我想办法阻止它
$ MIX_ENV=prod ./bin/project1 stop
--rpc-eval : RPC failed with reason :nodedown
为什么首先说它宕机了?
尽管如此,它仍然会保持:
$ ps aux
===>
user1 67297 0.0 0.2 13240 1860 - S Thu07 0:03.00 /usr/home/user1/my_projects/project1/erts-10.3.5.19/bin/epmd -daemon
怎么了?
P.S。通常,有 3 个左右的进程与一个项目有关,尽管在我的问题中只有 1 个。在这种情况下,我已经通过“kill”手动杀死了其中的 2 个。但是,这并没有解决这个问题。
即Erlang Port Mapper Daemon,Erlang/Elixir程序在与其他节点建立连接时使用的小型名称服务器。
The daemon is started automatically by command erl(1) if the node is to be distributed and no running instance is present.
因此当您启动 Phoenix 应用程序时它会自动启动。
不需要杀死那个进程,你可以保留它运行。
如果您运行这是一个版本,可能是因为版本 cookie 不是静态的并且在新部署后它发生了变化,或者版本名称配置不正确。
在生产环境中,我建议设置 RELEASE_COOKIE
环境变量。至于发布名称,您可以通过 ps auxwww
检查启动参数来确保将其设置为有意义的内容。 beam.smp 进程应该设置 SNAME
或 NAME
。
简而言之,如果您配置了静态发布 cookie 和静态 sname 或名称,那么 rpc/epmd 调用应该能够找到您的 运行 节点。