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

部署在Ploi.io的Laravel项目Horizon任务一直处于Pending状态

Laravel Horizon任务一直Pending无法执行的排查方案(Ploi.io部署环境)

针对你在Ploi.io部署的Laravel项目中Horizon任务始终处于Pending状态的问题,以下是常规方案之外的进阶排查思路:

1. 核对Redis队列键前缀与连接一致性

  • 检查.env中的REDIS_PREFIX配置,确认Horizon与任务分发使用的Redis键前缀完全一致。比如若.env设置REDIS_PREFIX=laravel_,需确保Horizon监听的队列键是laravel_queue:default,而非其他前缀。
  • 登录服务器执行redis-cli,输入KEYS "*queue*"查看Redis中实际存在的队列键,同时确认任务是否真的被推入目标队列(可通过LRANGE laravel_queue:default 0 -1查看队列内容)。

2. 检查Horizon进程的运行状态与权限

  • 执行ps aux | grep horizon确认Horizon进程是否正常运行,若进程存在但无响应,查看storage/logs/horizon.log中的报错信息(常见问题:Redis连接超时、目录权限不足导致日志无法写入)。
  • 验证Horizon进程的运行用户(通常为www-data或部署用户)是否具备Redis读写权限,以及项目目录的读写权限。

3. 排查任务本身的序列化问题

  • 若任务中包含无法序列化的对象(如闭包、未实现Serializable接口的模型关联),会导致任务卡在Pending状态。可临时简化任务逻辑(比如仅在handle方法中写入日志),测试是否能正常执行,以此排除任务代码的问题。

4. 确认Horizon环境配置加载正确性

  • 检查.env中的APP_ENV是否设置为production,确保Horizon加载的是environments.production下的配置(而非默认的defaults配置)。
  • 执行php artisan horizon:status查看当前Horizon的运行状态,确认监听的队列名称、进程数与horizon.php配置一致。

5. 排查Redis服务器异常

  • 执行redis-cli info memory查看Redis内存使用情况,若used_memory_peak接近maxmemory,Redis会拒绝写入新任务,需调整内存限制或清理过期数据。
  • 检查Redis是否存在持久化阻塞(如RDB快照生成、AOF重写),这类操作会暂时阻塞队列读写,导致任务Pending。

6. Ploi平台专属配置检查

  • 登录Ploi面板,确认Horizon守护进程的启动命令为php artisan horizon --env=production,避免因环境参数缺失导致配置加载错误。
  • 检查Ploi的环境变量是否覆盖了Laravel的队列配置,确认QUEUE_CONNECTION设置为redis,而非sync或其他无效连接。

你提供的Horizon配置参考:

'defaults' => [
    'supervisor-1' => [
        'connection' => 'redis',
        'queue' => ['default'],
        'balance' => 'auto',
        'autoScalingStrategy' => 'time',
        'maxProcesses' => 1,
        'maxTime' => 0,
        'maxJobs' => 0,
        'memory' => 128,
        'tries' => 1,
        'timeout' => 60,
        'nice' => 0,
    ],
],

'environments' => [
    'production' => [
        'supervisor-1' => [
            'maxProcesses' => 10,
            'balanceMaxShift' => 1,
            'balanceCooldown' => 3,
        ],
    ],

    'local' => [
        'supervisor-1' => [
            'maxProcesses' => 3,
        ],
    ],
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:22:53