Laravel Supervisord 数据库死锁
Laravel Supervisord DB Deadlock
使用 Laravel 和 Supervisord 来保持 php artisan queue:listen 运行ning。由于某种原因,它 运行 很长一段时间都很好,现在突然出现这个错误,然后作业重新启动
[2016-02-19 14:49:23] production.ERROR: exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction (SQL: update
accountsset
updated_at= 2016-02-19 14:49:23,
ReceivableBalance= 11968.1419330000,
RecoupableIncomeTotal= 0,
RecoupableExpenseTotal= 0 where
id= 74)' in /home/ec2-user/MPWLaravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:555
...
我读了一些东西说我正在获得一个 dealock,因为有太多的队列工作者运行宁,但我应该只有一个。
当我 运行、ps aux | grep artisan
我得到...
c2-user 12838 0.2 0.6 348288 26200 ? S 19:42 0:01 php artisan queue:listen --timeout=600
ec2-user 12920 76.3 2.0 484132 78212 ? R 19:49 3:47 php artisan queue:work --queue=https://sqs.us-east-1.amazonaws.com/129423672202/MpwNewProduction --delay=0 --memory=128 --sleep=3 --tries=0 --env=production
这表明两个队列工作者 运行ning?哪些可能导致死锁?还是只有 运行ning 和 queue:listen
还在检查新消息?
迷路了。
最终成为第二个队列侦听器 运行 我不知道。对于可能偶然发现类似问题的任何人。
使用 Laravel 和 Supervisord 来保持 php artisan queue:listen 运行ning。由于某种原因,它 运行 很长一段时间都很好,现在突然出现这个错误,然后作业重新启动
[2016-02-19 14:49:23] production.ERROR: exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction (SQL: update
accountsset
updated_at= 2016-02-19 14:49:23,
ReceivableBalance= 11968.1419330000,
RecoupableIncomeTotal= 0,
RecoupableExpenseTotal= 0 where
id= 74)' in /home/ec2-user/MPWLaravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:555
...
我读了一些东西说我正在获得一个 dealock,因为有太多的队列工作者运行宁,但我应该只有一个。
当我 运行、ps aux | grep artisan
我得到...
c2-user 12838 0.2 0.6 348288 26200 ? S 19:42 0:01 php artisan queue:listen --timeout=600
ec2-user 12920 76.3 2.0 484132 78212 ? R 19:49 3:47 php artisan queue:work --queue=https://sqs.us-east-1.amazonaws.com/129423672202/MpwNewProduction --delay=0 --memory=128 --sleep=3 --tries=0 --env=production
这表明两个队列工作者 运行ning?哪些可能导致死锁?还是只有 运行ning 和 queue:listen
还在检查新消息?
迷路了。
最终成为第二个队列侦听器 运行 我不知道。对于可能偶然发现类似问题的任何人。