Laravel Horizon:如何确定Supervisor节点上实际运行的进程?
查看Laravel Horizon指定Supervisor节点运行进程的方法
在Laravel Horizon里,Pending状态的任务包含延迟执行、等待槽位、正在运行或Horizon终止导致的孤立任务。要确定指定Supervisor节点上的实际运行进程,完全可以通过查看进程列表、Redis队列信息或Artisan命令实现,具体操作如下:
一、查看服务器进程列表
- 用系统进程命令过滤Horizon相关进程:执行
ps aux | grep horizon,能直接看到当前节点上所有Horizon worker进程的ID、运行状态、启动参数等信息。 - 结合Supervisor自身命令查看:执行
supervisorctl status,可以看到该节点上Supervisor管控的Horizon进程组状态,以及每个worker的具体运行状态(比如running、stopped),精准定位Supervisor管理的进程。
二、通过Redis队列信息查询
Horizon的所有进程和任务状态都存在Redis中,直接操作Redis就能获取:
- 连接Redis后,执行
SMEMBERS horizon:processes,这个集合存储了所有活跃Horizon进程的标识,包含进程ID、所属Supervisor节点、负责的队列等信息。 - 查看worker详细状态:执行
HGETALL horizon:workers,返回的哈希表包含每个worker的运行状态、当前处理的任务ID、运行时长等,能判断进程是否在实际运行。
三、使用Laravel Artisan命令
Horizon提供了专属Artisan命令来查看进程状态:
- 快速查看整体状态:执行
php artisan horizon:status,能看到当前Horizon的活跃worker数、队列负载等核心信息。 - 查看详细进程列表:执行
php artisan horizon:list,会列出所有worker进程的完整信息,包括所属Supervisor节点、进程ID、正在处理的任务、运行时长等,直接筛选指定Supervisor节点的进程即可。
内容的提问来源于stack exchange,提问作者kevinc
相关产品推荐
相关产品推荐

