Kuyruk ve Supervizor İşlemleri
Selamlar büyük bir proje devraldım . Kuyruk işlemleri mevcut ve ben projeyi yeni sunucuya taşıdım. Jobs tablosu vs şuan herşey hazır . Sunucuya supervizor kurmam diğer hepsinin çalışmasını sağlar mı yoksa ekstradan birşeyler yapmam gerekiyor mu ?
Kurulum konusunda açıklayıcı türkçe kaynak bulamadım .
Supervisor kurmanız gerekiyor.
Örnek ayar dosyanız da bu şekilde olacak:
; sineld sample project
command=php /home/site/proje/artisan queue:work --timeout=0 --tries=3
sineld üstat bu kurulum ayarı sadece nginx sunucu için mi geçerli ?
@sineld hocam burdaki her satırın ne anlama geldiğini gösteren bir kaynak mevcut mudur ? supervizor setup dediğimizde bu gösterdiğiniz dosya otomotik oluşuyor diye biliyorum
Kevin-Mitnick Dokümanlara bakabilirsiniz: http://supervisord.org/
Kullanın gitsin 😀
Ya da translate’ten kelimelerin karşılığına bakın.
Supervisor kullanabilmek için Linuxta Centos mu kurmak gerekir yoksa Ubuntu mu ?
Sunucu firması plesk admin desteğini sadece Centos için sağlıyor. Bu konuda beni aydınlatırsanız sevinirim.
Bunu okumuştum. Centos için destek var mı sadece onu bilmiyordum. Şu an ubuntuya kendi çabalarımla pleskdesk kurdum. Trial versiyon kuruldu.
Plesk kısmında aşağıdaki kısımlarda problem gösteriyor disk kısmında:
/snap/core/5548″ kullanımı %100
“/snap/core/6034″ kullanımı %100
“/snap/core/7270” kullanımı %100
Ne yapmam gerekiyor , biliyor musunuz ?
YalcinSahin Genellikle CentOS’da destek yok Ubuntu’da var gibi olmaz. Unix sistemlerde sadece uygulamaların dağıtım şekli değişiyor. Mesela Ubuntu deb kullanır, apt uygulaması ile uygulamalar üzerinde işlem yapar (kurulum, kaldırma, güncelleme vs…); CentOS ise paket olarak rpm kullanır, uygulama yöneticisi olarak yum kullanır.
Uygulamaların da resmi ve gayrı resmi dağıtım kanalları olur. Uygulama resmi kanalda varsa direk kurulabilir, örneğin Ubuntu’da apt-get install supervisor gibi. Resmi kanallarda yoksa gayrı resmi kanallar sisteme eklenerek ya da farklı paket yöneticileri kullanılarak kurulabilir.
/snap/core ile ilgili kısmı bilmiyorum bakmam lazım.
YalcinSahin Snap, uygulamaların ve bağımlılıklarının farklı Linux dağıtımında değişiklik yapılmadan çalışan bir paketi imiş. Kullandığı format snap formatı SquashFS dosyası olup ve /snap/<snap name>/<revision>/ şeklinde saklanıyormuş. Sadece okuma yapılabildiği için de aynı iso dosyası gibi bulunduğu alanın %100′ünü kaplıyor gözüküyormuş. Yani onlar problem değil, Plesk bilmediği için direkt boyuttan uyarı veriyordur.
Supervisor konusunda da birkaç şey sormak istiyorum.
Şimdi http://supervisord.org/installing.html kısmını okuyarak pip install supervisor kullanarak supervisor kurdum. Tabi burda pip desteğim olmadığı için bunların dosyalarını da ekledim.
supervisor kurarken : DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
bu şekilde bir warning olduğu için bir de laravel dökümanındaki sudo apt-get install supervisor komutuyla tekrar bir kurulum yaptım 🙂
şu an etc klasöründe supervisord.conf dosyası var ve ayrı olarak da laravelden oluşturduğum supervisor klasörü var.
Ben bu supervisor klasörünü baz alıp işlemlere devam ettim. Buradaki conf.d klasörüne girdim. Şu an bu klasör boş. Bunun içine de aynı dökümandaki gibi laravel-worker.conf olarak bir dosya oluşturdum.
command=php /home/forge/app.com/artisan queue:work sqs –sleep=3 –tries=3
Ben bu kısımda commanda kısmında : php (artisanın bulunduğu yol : /var/www/vhosts/domain/httpdocs/Laravel/artisan) queue:work olarak mı çalıştırmam gerekecek ?
Burada sürekli kuyruğu çalıştırmak istiyorum ve farklı farklı kuyruklar asenkron çalışsın yani.
Bunun için ayrı ayrı conf yazmam gerekecek sanırım.
Ben burada nginx kullanıyorum ama siz kullanmakta olduğunuz servisin ismini yazabilirsiniz. apache, apache2 veya httpd olacaktır seçenekler sanırım. Belgeleri incelemek gerek.
YalcinSahin Ben bu kısımda commanda kısmında : php (artisanın bulunduğu yol : /var/www/vhosts/domain/httpdocs/Laravel/artisan) queue:work olarak mı çalıştırmam gerekecek ?
Evet. Farklı PHP versiyonları da varsa PHP yolunu da tam yazmanız lazım. /usr/bin/php72/php gibi mesela.
YalcinSahin Burada sürekli kuyruğu çalıştırmak istiyorum ve farklı farklı kuyruklar asenkron çalışsın yani.
Aynı config dosyası içinde farklı bloklar yazmanız lazım:
command=php /var/www/vhosts/domain/httpdocs/Laravel/artisan queue:work --queue=kuyruk1 sqs –sleep=3 –tries=3
command=php /var/www/vhosts/domain/httpdocs/Laravel/artisan queue:work --queue=kuyruk2 sqs –sleep=3 –tries=3
command=php /var/www/vhosts/domain/httpdocs/Laravel/artisan queue:work --queue=kuyruk3 sqs –sleep=3 –tries=3
gibi. Bunun yerine ama Horizon kullanmanızı tavsiye ederim. Horizon kullanırsanız tek supervizor ile işi hallederseniz ve Horizon’un güzel yanı kuyruklar arası dengeyi düzenleyip işleri ona göre dağıtıp ateşlemesi. Bu dengeyi de kendiniz belirleyebiliyorsunuz (balance ayarı)
@mgsmus konuya giriyorum ama cevap verirseniz sevinirim, bir projede farkli farkli joblarin ateslenmesi icin birden fazla mi supervisor islemi yapmamiz gerekiyor ?
Bunun adı kuyruk, yani işler sıraya dizilecek, daha sonra sırası gelen ateşlenecek demek. @YalcinSahin istediği aynı anda birden fazla işi ateşletmek. O yüzden birden fazla worker dediğimiz kuyruk işleyiciye ihtiyacı var.
Peki bunları yaptıktan sonra supervisoru başlattık. Supervisor sürekli olarak ben dur komutu verene kadar çalışacak mı ?
Bununla ilgili okuduğum kadarıyla bunun da çalışması için script yazılıp cronjob yapılmış. Ne kadar doğru emin olamadım tabi.
YalcinSahin Evet. Sunucu resetlese bile açılışta supervisor kuyruk işleyicisini otomatik tekrar başlatacak. Cronjob ile ilgisi yok. Onu yapan başka bir iş için yapmıştır. Ayrıca kuyruk işleyicisi durdurulmaz; siz iş göndermeyi kesersiniz. Mantığınızı buna göre oturtun.
Laravel horizon , sanırım sadece Redis ile bağlantılar için kullanılabiliyor
YalcinSahin Evet, Redis lazım. Şimdi farkettim siz Amazon SQS kullanıyorsunuz.