laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

发布时间 - 2025-10-26 00:00:00    点击率:
Laravel Horizon可解决队列延迟与失败问题,通过安装composer require laravel/horizon并发布配置文件,设置QUEUE_CONNECTION=redis;启动php artisan horizon服务后,结合Supervisor后台运行;访问/horizon界面需配置路由与中间件权限,查看Metrics、Failed Jobs等数据;在config/horizon.php中配置environments与supervisor的balance策略为auto,分配进程数并重启生效;处理失败任务需生成failed_jobs表,执行migrate后在Horizon界面重试或删除。

如果您在使用 Laravel 开发应用时启用了队列系统,但发现任务处理延迟或失败,可能是队列进程未正常运行或负载过高。Laravel Horizon 提供了完整的队列监控与管理能力,帮助您可视化 Redis 队列状态并进行调优。

本文运行环境:MacBook Pro,macOS Sonoma

一、安装与配置 Laravel Horizon

Laravel Horizon 是 Laravel 官方提供的 Redis 队列仪表板,通过它可实时查看队列性能、任务吞吐量及工作进程状态。正确安装和基础配置是启用监控的前提。

1、在项目根目录执行 Composer 命令安装 Horizon:composer require laravel/horizon

2、发布 Horizon 的配置文件和资源文件:php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

3、打开 config/horizon.php 文件,根据当前环境设置队列驱动、工作进程数量以及内存限制等参数。

4、确保 .env 文件中的 QUEUE_CONNECTION 设置为 redis,并配置好 Redis 连接信息(如 REDIS_HOST、REDIS_PASSWORD)。

二、启动 Horizon 服务进行队列监听

Horizon 通过独立的守护进程监听 Redis 中的任务,替代默认的 php artisan queue:work 命令,提供更稳定的队列处理机制。

1、启动 Horizon 主进程命令为:php artisan horizon,该命令会持续运行并输出日志。

2、若需后台运行,可使用 Supervisor 等进程管理工具配置常驻服务,避免终端关闭导致中断。

3、停止所有 Horizon 进程可通过命令:php artisan horizon:terminate,此操作将安全终止当前运行的所有 worker。

三、访问 Horizon Web 仪表板

Horizon 提供图形化界面展示队列运行状态,包括当前作业数、等待时间、处理速度及失败任务列表。

1、确保路由已注册,在 routes/web.php 中添加 Route::get('/horizon', function () { return view(\'horizon::index\'); }); 或检查是否自动加载。

2、修改 app/Providers/RouteServiceProvider.php 中的 map 方法,确保 Horizon 路由被包含。

3、访问 /horizon 路径前,请确认中间件设置了访问权限,可在 config/horizon.php 中设置 only_hosts 数组或 gate 授权逻辑。

4、登录后可查看“Metrics”、“Recent Jobs”、“Failed Jobs”等关键面板数据。

四、配置队列平衡策略与工作进程

Horizon 支持多种平衡模式(如 auto、simple、false),可根据任务类型动态调整并发处理能力。

1、在 config/horizon.php 的 environments 配置块中定义不同环境下的 worker 设置。

2、设置 supervisor 的 balance 选项为 auto,允许 Horizon 根据队列负载自动分配进程资源。

3、指定每个 supervisor 处理的队列名称和进程数,例如:'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default'], 'balance' => 'auto', 'processes' => 10 ]

4、修改完成后重启 Horizon 服务以使新配置生效。

五、处理失败队列任务

当队列任务因异常抛出而失败时,Horizon 会将其记录到失败任务表中,便于排查与重试。

1、确保数据库已创建 failed_jobs 表,可通过运行 php artisan queue:failed-table 生成迁移。

2、执行迁移命令 php artisan migrate 创建数据表结构。

3、在 Horizon 界面的 "Failed Jobs" 标签页中查看详细错误信息,包括异常堆栈跟踪。

4、选择特定失败任务执行重试操作,也可批量删除已修复的问题条目。


# php  # word  # laravel  # redis  # composer  # app  # macbook  # 工具  # mac  #   # ai  # 路由  # 中间件  # require  # auto  #   # map  # 并发  # function  # default  # table  # macos  # 数据库  # 仪表板  # 重试  # 可通过  # 重启  # 配置文件  # 运行环境  # 将其  # 也可  # 可在  # 您在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript实现Fly Bird小游戏  北京网站制作公司哪家好一点,北京租房网站有哪些?  WordPress 子目录安装中正确处理脚本路径的完整指南  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在云虚拟主机上快速搭建个人网站?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel如何实现一对一模型关联?(Eloquent示例)  如何快速使用云服务器搭建个人网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  浅谈javascript alert和confirm的美化  专业商城网站制作公司有哪些,pi商城官网是哪个?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  如何在云主机上快速搭建网站?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  5种Android数据存储方式汇总  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  什么是javascript作用域_全局和局部作用域有什么区别?  如何在IIS中配置站点IP、端口及主机头?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  香港服务器建站指南:免备案优势与SEO优化技巧全解析  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  如何在阿里云域名上完成建站全流程?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何登录建站主机?访问步骤全解析  JavaScript如何实现路由_前端路由原理是什么  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Android自定义控件实现温度旋转按钮效果  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  详解vue.js组件化开发实践  详解Oracle修改字段类型方法总结  详解jQuery中的事件  如何快速完成中国万网建站详细流程?