Selamlar,
Neden kaynaklandığından emin olmadığım bir veritabanı hatası alıyorum. Kullandığım veritabanı mysql. Laravel'in son stabil sürümü olan 5.1.x kullanıyorum..
Kuyruktaki işlerin halledilmesi için 6-12 arasında worker ile kuyrukları işliyorum. Daemon olarak çalıştırıyorum.
Örnek:
php artisan queue:work --tries=5 --daemon --queue=db-high,db-medium,db-low
Workerlar 4-5 saatten sonra şu hatadan dolayı işlemleri işleyemiyor..
local.ERROR: exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction' in
Veritabanında biraz yük fazla . Mysql cli istemciden baktığım kadarıyla saniyede ortalama 1000 veritabanı sorgusu yapılıyor.
Yaklaşık 7-8 saatte 6 milyona yakın sorgu dönüyor. Bu sorguların yaklaşık % 60 update ya da insert sorguları..
Laravel dokumanında şöyle bir uyarı var:
Daemon queue workers do not restart the framework before processing each job. Therefore, you should be careful to free any heavy resources before your job finishes. For example, if you are doing image manipulation with the GD library, you should free the memory with imagedestroy when you are done.
Similarly, your database connection may disconnect when being used by a long-running daemon. You may use the DB::reconnect method to ensure you have a fresh connection.
Beni ilgilendiren kısmı bold olan son bölüm. Job sınıflarına db bağlantısının olup olmadığını kontrol eden, yoksa yeniden bağlantı yapan bir kaç method yazacağım. Ama sorunumu çözer mi bundan emin değilim..
Benzer bir sorunu daha önce yaşamış olan var mı ?