2013-07-31 14 views
14

Puma hakkında bir çok şey var ve Unicorn'dan daha hızlı. Ancak, aynı zamanda JRuby ve Rubinius'un örnekleri için daha uygun olduğunu belirtiyorlar.Puma, Ruby 1.9.3 ve Rails 3.2 için Unicorn'dan daha mı iyi?

Soru: Ruby 1.9.3 ile Rails 3.2 uygulaması hakkında ne düşünüyorsunuz? Tek boynuzlu at ya da Puma mı?

+7

http://puma.io/

Teşekkür görebilirsiniz fazlası için

. Çoğunlukla olmadığı için, benim gibi NOOBS'un verdiği kararlara rehberlik eden cevaplar veriyorlar. – pratski

+0

Önceki yorumuma ne oldu? Gelecek birkaç gün boyunca bu konuya daha derinden bakacağım ve yararlı bir cevap yazmayı umuyorum. O zamana kadar bekleyebildigini umarim –

+0

Puma ile bilirsin, config.threadsafe'i etkinlestirmeniz yeterli olacak ve bu da solucanlarin bir hayli degeridir .. Ama bu, herkesin Rails 4'de varsayilan olarak etkin oldugunu düsündügünde bakmasi gereken bir sey. – pratski

cevap

11

puma

http://ylan.segal-family.com/blog/2013/05/20/unicorn-vs-puma-redux/

Unicorn vs boynuzlu at için bir büyük eşya eşzamanlı gelen çoklu istekleri işlemek için çatallı süreçlerini kullanan bir Raf HTTP sunucusu var olmasıdır.

  1. Süreç yönetimi: Unicorn biçmek ve kırık uygulamalardan die işçileri yeniden başlayacaktır. Birden çok işlemi veya bağlantı noktasını kendiniz yönetmeye gerek yoktur. Unicorn, arka ucunuza ölçeklendirmeyi seçtiğiniz herhangi bir sayıda işçi sürecini oluşturabilir ve yönetebilir.
  2. Yük dengeleme, tamamen işletim sistemi çekirdeği tarafından yapılır. İstekler, yoğun çalışan bir işlemin ardına asla yığılmıyor.
  3. Uygulamanızın iş parçacığı güvenli olup olmadığı umurumda değil, çalışanların tümü kendi izole adres alanlarında çalışır ve maksimum sağlamlık için tek seferde bir istemciye hizmet verir.
  4. Tüm Rack uygulamalarını, Rack 'un Rack rafı üzerinden Rails'in Rack öncesi sürümleriyle birlikte destekler.
  5. Uygulamanızdaki tüm günlük dosyalarının USR1 sinyali ile yeniden açılması. Bu, dosyalara atomik olarak ve hızlı bir şekilde 'u racy ve yavaş copytruncate yöntemi yerine yeniden adlandırılarak döndürme izni verir. Unicorn aynı zamanda, bir istekte bulunan 'un aynı satırda bulunan çok satırlı günlük girişlerini sağlamak için gerekli adımları atmaktadır. Bağlantıları kaybetmeden nginx tarzı ikili yükseltmeler
  6. . Yükseltme Unicorn, tüm uygulamanız, kütüphaneleriniz ve hatta müşterilerinizi düşürmeden Ruby yorumlayıcınız.
  7. before_fork ve after_fork uygulamalarınızın çatallı süreçlerle uğraşırken karşılaştıkları durumlarda kanca olması durumunda. “Preload_app” yönergesi false (varsayılan) olduğunda bunlar 'a gerek duymamalıdır.
  8. belleğini kaydetmek için yazma dostu dostu bellek yönetimi ile birlikte kullanılabilir (“preload_app” öğesini true değerine ayarlayarak).
  9. UNIX soketleri de dahil olmak üzere birçok arabirimde dinlenebilir, her bir çalışan işlemi, kolay hata ayıklama için after_fork kanca aracılığıyla özel bir bağlantı noktasına da bağlanabilir. yapılandırma için
  10. Basit ve kolay Yakut DSL

    1. çözer tüneli edememek yanı sıra uygulanacak böylece yükleme ilerlemeyi bildirim sağlayan on-the-fly transferleri, chunked HTTP üzerinden keyfi akış tabanlı protokoller.Puma (sözde sunucu melez daha yeni bir sürümü)

      Puma Yakut web uygulamaları için bir basit, hızlı ve son derece eşzamanlı HTTP 1.1 sunucusu için

. Rack'u destekleyen herhangi bir uygulama ile kullanılabilir ve Webrick ve Mongrel'in yerini alır. Rubinius için go-to-sunucu olmak üzere tasarlandı, aynı zamanda JRuby ve MRI ile iyi çalışıyor. Puma hem geliştirme hem de üretim ortamlarında kullanılmak üzere tasarlanmıştır.

Puma hız ve paralellik

Eğer puma en iyisi sonra hız karşılaştırma görmek istiyorsanız için favori. Eğer Stack o inatçı sorulara politikası değişmeli

+0

Heroku kullanılıyorsa, point # 2, bu heroku makalesinin "yavaş istemci" bölümünde açıklandığı gibi tam olarak doğru değil: https://devcenter.heroku.com/articles/rails-unicorn, "Tüm Unicorn çalışanları bağlıysa, yeni istekler sıraya alınır ve uygulamanızın normalden fazla istek sıraları veya hatta H12 hataları yaşanması muhtemeldir" – ryan0