参考资料

  1. 网站引擎 API 地址配置有问题
  2. 占用 8000 的正是你之前启动的 octane 进程
  3. Fresns 的 Swoole 配置
  4. Swoole 6.2.2 扩展正在为 PHP 8.3 编译的过程
  5. Fresns 基于 Swoole 的运行状态输出
  6. Laravel Octane 与 Swoole 扩展的版本不兼容
  7. 按 2 核 2G 的标准,把你的 config/octane.php 调整好
  8. Nginx 无法连接到 Octane 监听的端口

端口还是被占用,但 PID 变了(从 244xx 变成了 261xx)。

端口还是被占用,但 PID 变了(从 244xx 变成了 261xx)。这说明:

  1. 你 pkill 之后,有东西又自动把 octane 拉起来了;

  2. 最可能的元凶是 Supervisor / 宝塔守护进程 / systemd 里已经配了一个 octane 自启服务,杀掉就被立刻重启。

1. 先确认是不是被守护进程拉起来的

# 看这些 php 进程的父进程是谁
ps -o pid,ppid,cmd -p 26103,26104,26106,26107,26108,26110,26160

# 看它们的完整启动命令
ps -fp 26103,26104,26106,26107,26108,26110,26160

重点看 PPID(父进程 ID):

  • 如果 PPID 是 1 或某个 supervisord 进程 → 说明是 supervisor 在守护;

  • 如果 PPID 是宝塔的某个守护脚本 → 是宝塔在拉起;

  • 如果 PPID 是你的 shell → 那是你手动启动的残留。

同时查一下:

# 有没有 supervisor
ps aux | grep -i supervisor | grep -v grep

# 有没有 systemd 服务
systemctl list-units | grep -i octane
systemctl list-units | grep -i fresns

# 宝塔的守护进程列表
ls /www/server/panel/plugin/supervisor/ 2>/dev/null

2. 如果确认是 supervisor/守护进程拉起的

先停守护,再杀进程,否则杀了还会自动重启。

如果是 Supervisor

# 查看 supervisor 管理的进程
supervisorctl status

# 停掉 octane 相关的
supervisorctl stop fresns-octane   # 名字按实际显示改

# 或者停掉全部
supervisorctl stop all

如果是宝塔的 Supervisor 管理器:宝塔面板 → 软件商店 → Supervisor 管理器 → 找到对应进程 → 停止(不是只删,要先停)。

如果是 systemd

systemctl stop octane        # 名字按实际改
systemctl disable octane     # 禁止开机自启

3. 如果查不到守护进程,就是手动残留

直接强杀,然后立刻再查一次端口,看是否又被拉起:

# 强杀所有 octane / swoole
pkill -9 -f 'octane:start'
pkill -9 -f 'swoole'

# 立刻查端口
ss -lntp | grep :8000

如果杀完几秒内端口又出现,100% 是被守护进程拉起的,回到第 2 步。

4. 确认干净后再启动

ss -lntp | grep :8000    # 必须无输出

cd /www/wwwroot/www.madama.cn/fresns
php artisan octane:start --server=swoole --host=127.0.0.1 --port=8000 --workers=2 --task-workers=1 --max-requests=500

请先执行这两条,把结果发我

ps -o pid,ppid,cmd -p 26103,26104,26106,26107,26108,26110,26160
ps aux | grep -i supervisor | grep -v grep

看到 PPID 和有没有 supervisor,就能立刻定位是谁在反复拉起 octane。

作者:王壹杰
时间:2026-10-02 11:29:49
来源:https://fresns.ciilii.com/