上一篇
🚀 Laravel队列优化与高效消费全攻略(2025最新版) 🚀
内存硬限制
php artisan queue:work --memory=256
⚠️ 当工作进程内存超过256MB时自动重启,避免“内存爆炸”!
定期重启策略
php artisan queue:work --timeout=60 --tries=3
--timeout=60
:任务运行超60秒强制终止 --tries=3
:失败任务重试3次后入库失败队列Supervisor进程管家
[program:laravel-worker] command=php /path/to/artisan queue:work --memory=256 numprocs=8 # 8个工作进程并行处理 autorestart=true
💡 搭配numprocs
实现负载均衡,一台服务器轻松扛住万级任务!
方式 | 适用场景 | 命令示例 |
---|---|---|
单进程消费 | 开发/测试环境快速验证 | php artisan queue:work |
多进程并发 | 生产环境高并发任务 | php artisan queue:work & ×3(后台运行3个进程) |
优先级队列 | 紧急任务优先处理(如支付回调) | php artisan queue:work --queue=high,default |
Daemon模式 | 长期运行任务(代码更新需重启) | php artisan queue:work --daemon |
配置三步走
QUEUE_CONNECTION=redis REDIS_QUEUE=default
// config/queue.php 'connections' => [ 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, ], ]
任务类示例
class SendEmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public function handle() { // 📧 发送邮件逻辑(异步不阻塞主进程) } }
性能对比
| 驱动 | 吞吐量 | 延迟 | 适用场景 |
|----------|------------|----------|----------------------------|
| Redis | 🌟🌟🌟🌟🌟 | <50ms | 高并发、实时性要求高 |
| Database | 🌟🌟 | >500ms | 低并发、简单任务(不推荐) |
任务拆分
📦 将“生成报表”大任务拆分为“分片处理+合并结果”子任务,并行度提升10倍!
错误处理黄金组合
public $tries = 3; // 失败重试3次 public function failed(Exception $exception) { // 📢 发送告警到钉钉/企业微信 Log::error("Job failed: {$exception->getMessage()}"); }
监控大屏
📊 使用Laravel Horizon实时监控:
php artisan horizon:install npm install && npm run dev
👀 图形化界面查看队列积压、工作进程状态!
自动内存回收
Laravel 10.5+新增--auto-restart
参数,智能检测内存峰值并重启进程。
优先级动态调整
ProcessHighPriorityJob::dispatch()->onQueue('high');
🎯 紧急任务秒级插入队列头部!
云原生队列
🌩️ 腾讯云CMQ无缝集成:
'connections' => [ 'cmq' => [ 'driver' => 'cmq', 'secret_id' => 'xxx', 'secret_key' => 'xxx', ], ]
--memory
+ Supervisor兜底 🔗 参考链接
💬 互动话题
你遇到过队列内存泄漏的坑吗?欢迎评论区分享避坑指南! 👇
本文由 业务大全 于2025-08-26发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/733114.html
发表评论