Bir çatal öncesi web sunucusu modeli tam olarak nedir?


102

Bir web sunucusunun kendisini çatal öncesi bir web sunucusu olarak tanımlamasının tam olarak ne anlama geldiğini bilmek istiyorum. Yakut için unicorn ve python için gunicorn gibi birkaç örneğim var .

Daha spesifik olarak, sorular şunlardır:

  • Bu model hangi sorunu çözüyor?
  • Bir çatal öncesi web sunucusu başlangıçta başlatıldığında ne olur?
  • Talebi nasıl ele alıyor?

Ayrıca, tek boynuzlu at / gunicorn için daha spesifik bir soru:

(G) unicorn ile çalıştırmak istediğim bir web uygulamam olduğunu varsayalım. Başlatma sırasında, web uygulaması bazı başlangıç ​​işlemleri yapacaktır (örn. Ek veritabanı girişlerini doldurun). Eğer (g) tek boynuzlu atı birden çok işçi ile yapılandırırsam, başlatma işleri birden çok kez çalıştırılır mı?

Yanıtlar:


107

Önceden çatallanma, temel olarak bir ustanın her isteği yerine getiren çatallar oluşturması anlamına gelir. Çatal, tamamen ayrı bir * nix işlemidir.

Aşağıdaki yorumlara göre güncelleyin. Giriş pre, pre-forkbir talep gelmeden önce bu işlemlerin çatallanması anlamına gelir. Bununla birlikte, genellikle yük yukarı ve aşağı giderken artırılabilir veya azaltılabilir.

Önceden çatallanma, iş parçacığı açısından güvenli OLMAYAN kitaplıklarınız olduğunda kullanılabilir. Ayrıca, bir istek içindeki sorunlara neden olan sorunların, sunucunun tamamını değil, yalnızca işledikleri süreci etkileyeceği anlamına gelir.

Birden çok kez çalışan başlatma işleminin tümü, ne dağıttığınıza bağlıdır. Bununla birlikte, genellikle her işlem için bağlantı havuzları ve bu türden şeyler mevcut olacaktır.

Bir diş açma modelinde, ana birim, istekleri de göndermek için daha hafif parçacıkları oluşturur. Ancak bir iş parçacığı çok büyük sorunlara neden olursa, ana süreç üzerinde yansımaları olabilir.

Nginx, Apache 2.4'ün Event MPM'si veya gevent (Gunicorn ile birlikte kullanılabilir) gibi araçlarla bunlar eşzamansızdır, yani bir işlem engellemeden yüzlerce isteği işleyebilir.


30
"Prefork" kelimesinin anlamı hakkında da aynı şüpheye sahiptim. Doğal olarak bir çeşit çatallanma anlamına geldiğini sanıyordum, ama "ön" kısmı kafamı karıştırıyordu. Burada abbreviations.com/prefork buldum , "pre" kısmı aslında işçi süreçlerinin önceden yaratıldığı anlamına geliyor, böylece zaman sadece bir işçiye ihtiyaç duyulduğunda boşa harcanmaz. Bana çok mantıklı geliyor :)
El Ninja Trepador

1
//, @ElNinjaTrepador, neden ayrı bir cevap eklemiyorsunuz? Bu, en azından benim için çok daha anlaşılır bir şeydi ve bu yorumun daha belirgin bir yer edinmesi başkalarına daha fazla yardımcı olabilir.
Nathan Basanese

2
Ön çatallanma öncesi hakkında biraz daha bilgi eklemek için yanıtı güncelledim. @ElNinjaTrepador Bunu belirttiğiniz için teşekkürler Bunun iyi bilinmediğini fark etmemiştim.
Joe Doherty

1
@NathanBasanese yapacak efendim;)
El Ninja Trepador

4
@JoeDoherty belki iyi biliniyor, o zamana kadar benim tarafımdan bilinmiyordu: DI başka bir cevap ekleyecekti (Nathan'ın isteğine göre), ama siz benim söylediklerimi sizinkine eklediğiniz için artık gerekli değil: )
El Ninja trepador
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.