Laravel Horizon监控_Horizon如何监控Redis队列状态【教程】

落宇大大_2781

落宇大大_2781

2026-05-07

321人浏览

原创

horizon需手动配置路由、队列名和redis清理,否则监控失真;不支持redis集群,waiting统计滞后,且“成功”仅指执行完成而非业务成功。

laravel horizon监控_horizon如何监控redis队列状态【教程】

Horizon 本身不自动暴露监控页面,也不默认捕获所有队列异常;它只反映“是否执行完”,不判断“是否成功”。要真正用起来,得手动配路由、对齐队列名、清理 Redis 堆积数据,否则看到的 waiting 数和实际积压可能严重脱节。

Horizon Web 页面打不开:/horizon 路由没注册或权限失控

装完 laravel/horizon 并运行 php artisan horizon,不代表你能访问 /horizon。它只是起了 worker 进程,Web 控制台是另一套逻辑。

  • 必须在 routes/web.php 中显式添加 Horizon::routes(); —— 不是自动加载,也不是靠中间件隐式启用
  • 强烈建议包在环境判断里:if (app()->environment('local', 'staging')) { Horizon::routes(); },生产环境直接禁用,避免敏感指标泄露
  • 如果你项目全局加了 auth 中间件(比如强制登录),Horizon::routes() 默认不带任何认证,得手动指定:Horizon::routes()->middleware(['auth']);
  • 确认 Nginx/Apache 没把 /horizon 路径重写或拦截掉;常见错误是伪静态规则把所有非文件请求都转给了 index.php,但漏掉了这个前缀

任务一直卡在 “waiting”:队列名不匹配 or Supervisor 没真跑起来

Horizon 的 UI 显示 waiting=50,但你发的任务就是不消费——大概率不是 Horizon 坏了,而是底层没对齐。

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载
  • Horizon 默认只监听 default 队列;如果你用 dispatchOnConnection('redis')->onQueue('emails'),它根本不会处理,得去 config/horizon.php 的 environments 里把 'queues' => ['default', 'emails'] 加进去
  • 运行 ps aux | grep horizon,如果只看到 1 个主进程、没有带 supervisor- 前缀的子进程,说明 Supervisor 没生效;检查配置里是否漏了 numprocs=4,然后必须执行 sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start horizon:
  • Redis 连接失败也会表现为 waiting 不动;试下 redis-cli -h 127.0.0.1 -p 6379 LLEN queues:default,如果报错或返回 (error),先查 config/database.php 里的 redis.default 配置和 .env 中的 REDIS_HOST/REDIS_PASSWORD

Redis 内存暴涨、horizon:clear 不起效:trim 配置没生效 or Cluster 不支持

高频短任务跑几天后,redis-cli info memory 显示 used_memory 飙升,但 php artisan horizon:clear 执行完没变化——问题出在配置粒度和底层限制上。

  • 'recent' => 1000 只控制 UI 展示条数,不影响 Redis 实际存储;真正删数据靠的是 'completed' => 1000 和 'failed' => 1000,它们分别对应 horizon:recent_jobs 和 horizon:failed_jobs 这两个 key 的最大长度
  • php artisan horizon:terminate 不清 Redis,只让 worker 优雅退出;必须配合 horizon:clear 定期执行(比如 crontab 每小时一次)
  • 如果用的是 Redis Cluster 或哨兵模式,Horizon 会直接报 ERR unknown command `evalsha`;它目前(截至 2026 年 5 月)**不支持集群拓扑**,必须切回单机 Redis 或加一层 Proxy

监控积压却告不了警:waiting() 返回值滞后 or 队列前缀不一致

你写了 Artisan 命令调 Horizon::stats()->waiting() 判断积压,但告警总延迟几分钟甚至不触发——因为这个值来自 Horizon 自己缓存的统计,不是实时 Redis 状态。

  • 若需秒级响应,绕过 Horizon,直接用 redis-cli LLEN queues:default;注意确认前缀:默认是 queues:,但可通过 HORIZON_PREFIX 环境变量或 config/horizon.php 中的 prefix 修改
  • Horizon::stats() 每 5 秒更新一次,且只统计被 Horizon worker 监听的队列;如果你有部分任务走 queue:work,它完全看不到
  • 别只盯一个队列;多个业务线可能用了不同队列名(notifications, exports),得逐个查 LLEN queues:notifications,否则积压藏在盲区

最常被忽略的一点:Horizon 的 “success” 状态仅表示任务被 worker 取出并执行完毕,哪怕 handle() 里抛了未捕获异常、数据库事务回滚、HTTP 请求 500,只要没崩掉整个进程,它就标 green。真要判断业务成败,得结合日志、失败表、或在任务里主动上报状态。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

laravel redis

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

857

10

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

2024.04.09

835

9

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

2488

10

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.10

4281

7

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

2025.08.05

6170

22

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

2025.08.05

4096

13

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.05

7669

7

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

2026.03.04

1476

29

Laravel 框架安装指南
Laravel 框架安装指南

本指南详解 Laravel 框架安装全流程,涵盖 PHP 8.1+ 环境配置、Composer 依赖管理工具安装及国内镜像源优化。重点演示使用 composer create-project 命令创建 Laravel 10/11 项目,解决常见安装错误与依赖冲突。从环境搭建到项目初始化,助您快速完成 Laravel 开发环境部署,为后续 Web 应用开发奠定基础。适合 PHP 初学者与框架迁移开发者参考。

2026.04.09

215

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 210人学习

Composer手册
Composer手册

共0课时 | 0人学习