2016-02-19 136 views
1

使用Laravel和Supervisord保持php工匠隊列:偵聽運行。出於某種原因,它已經很長一段時間運行良好,現在突然我得到這個錯誤,然後將作業重新啓動Laravel Supervisord DB死鎖

[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: updateset的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

...

我讀了幾件事情,說我得到一筆優惠,因爲太多的排隊工人正在運行,但我應該只有一個。

當我運行,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

這表明運行兩個隊列工人呢?這可能會導致僵局?或者只是一個正在運行的人,然後queue:listen仍在檢查新消息?

如此迷茫。

+0

自監控程序啓動隊列以來,是否對代碼庫進行了有關數據庫交互的更改?如果是,那麼在重新啓動supervisord之後這是否仍然存在? – luchaos

+0

我不這麼認爲。我在最新的主分支上。 – jamesmpw

回答

4

結束了作爲第二個隊列偵聽器運行我沒有意識到。對於任何可能遇到類似問題的人。