Worker Threads kullanırken iş kuyruğunu nasıl sınırlıyorsunuz?

0 Yanıt 3 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
CPU yoğun işleri ana event loop’tan ayırmak için Worker Threads kullanmaya başladım; fakat kısa sürede başka bir sorunla karşılaştım: İşçiler meşgulken gelen görevler kuyrukta birikiyor. Trafik yükselince gecikme artıyor, bellek tüketimi de kontrolsüz büyüyebiliyor. Yani yalnızca bir worker havuzu kurmak yetmiyor gibi görünüyor.

Benim için üç karar özellikle önemli:

  • Havuz boyutu: İşçi sayısını sınırsız artırmak yerine, uygulamanın çalıştığı ortamı ve işlerin CPU tüketimini dikkate alarak sabit tutmak daha öngörülebilir.
  • Kuyruk sınırı: Kuyruk dolduğunda yeni işi bekletmek, reddetmek ya da API’den kontrollü bir hata döndürmek gerekiyor. Aksi hâlde sistem kapasitesinin üstündeki yük sadece gecikmeli olarak geri geliyor.
  • Hata ve iptal davranışı: Worker beklenmedik biçimde kapanırsa görevin ne olacağı net olmalı. Yeniden deneme düşünülüyorsa, aynı işin iki kez çalışmasının zarar vermeyeceğinden de emin olmak gerekiyor.


HTTP isteğiyle başlayan bir işte kullanıcı bağlantıyı kapatınca görevi iptal etmek de her zaman kolay değil; özellikle işin başka bir yerde kalıcı olarak tamamlanması bekleniyorsa. Siz havuz ve kuyruk sınırlarını nasıl belirliyorsunuz? Kuyruk dolduğunda bekletme mi, reddetme mi tercih ediyorsunuz?

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi