You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找并终止上一次Phoenix会话残留进程[Phoenix/Elixir]

问题场景

执行mix phx.server启动Phoenix服务时,未连续按两次ctrl+c正常终止关联进程就直接退出文本编辑器,后续重新执行mix phx.server时触发报错。

关键说明:报错中的failed to start child并非服务无法启动的根因,问题根源为上一次运行的Phoenix进程未正常关闭,残留进程占用运行资源导致新服务实例拉起失败。

已尝试的排查操作(未解决问题)
  • 进程查看:使用lsof -i :4000/:5432/:8080命令、netstat相关指令、系统活动监视器查找目标进程
  • 进程终止:尝试使用kill -9 <PID>指令终止进程,但始终无法定位到上一次Phoenix会话对应的正确PID,无法清除残留进程
解决步骤

Phoenix服务运行在Erlang虚拟机之上,异常退出时残留的核心进程不会直接绑定业务端口,因此仅靠端口查询无法定位全部残留进程,按以下步骤操作即可完成清理:

  • 批量终止所有残留关联进程,依次执行:
pkill -9 -f beam.smp
pkill -9 -f epmd
pkill -9 -f "mix phx.server"

其中beam.smp是Erlang虚拟机主进程,承载所有Phoenix服务运行逻辑;epmd是Erlang端口映射守护进程,异常退出时会残留节点锁状态,同样会阻断新服务启动。

  • 执行校验命令确认清理结果:
ps aux | grep -E 'beam|epmd|mix phx'

无匹配的运行中进程即代表清理完成。

  • 重新执行mix phx.server即可正常拉起服务。
避坑说明

退出Phoenix服务时,连续按两次ctrl+c走标准退出流程,即可避免残留进程导致的启动异常。


内容的提问来源于stack exchange,提问作者Andrew Bregman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:09:26