队列完成了,但是数据并没有保存到,数据库查询时,有一个进程沉睡了,并且锁死了对应的表
1. 运行环境
1). 当前使用的 Laravel 版本?
Laravel Framework 7.30.6
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
PHP 7.4.30 (cli) (built: Nov 18 2022 17:17:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies
3). 当前系统
linux
4). 业务环境
开发环境
5). 相关软件版本
阿里云mysql
2. 问题描述?
单独开了一个队列,用的redis存的队列数据
守护进程配置
当前日志
守护进程的日志
代码
3. 您期望得到的结果?
事务正常,队列也正常,不出现锁的情况,目前锁的情况改成单队列消费模式,其他表查询的同一条数据的情况很低
4. 您实际得到的结果?
奇怪的问题是,设置了超时,假设锁表了,超时不也应该自动失败
但是观测日志,队列任务完成了,事务应该提交了,正常来说也不会回滚保存的数据才对,跟锁表或者卡的关系有多大呢?
数据库卡的时候,就出现下面的结果,然后终止进程之后,重启队列后,事务有恢复正常保存的情况
可以看到事务锁等待的意思?目前就是这样情况,记录与18:13分
然后看了下队列日志也是消费,但是出现里面这个队列,目前消费成功的队列数据看数据库是失败的,没有提交事务成功
下面是新的日志,进程号也是对应上的
推荐文章: