Unicorn altında Ruby on Rails web uygulamasını çalıştırıyoruz. Bizim app kesinlikle CPU bağlı değildir (12 çekirdekli bir çift Xeon E5645 sistemimiz var ve pik yük ortalama değeri 6 civarındadır). Başlangıçta 40 Unicorn çalışanıyla başladık, ancak uygulama belleği ayak izi zamanla arttı. Şimdi, işçi süreçlerinin sayısını azaltmalıyız. Standart (CPU çekirdek sayısı + 1) formülünün Unicorn için de geçerli olduğunu düşündüm, ancak meslektaşım beni CPU başına daha fazla Unicorn örneği ayırmamız gerektiğine ikna etmeye çalıştı ve bu bağlantıyı sağladı . Yine de, boştaki Unicorn süreçlerine neden bu kadar çok bellek harcamamız gerektiğinden tam olarak emin değilim.
Sorum şu: CPU çekirdeği başına birden fazla Unicorn örneğine sahip olmanın nedeni nedir? Unicorn'un bazı mimari özelliklerinden mi kaynaklanıyor? Meşgul Unicorn işlemlerinin yeni bağlantıları kabul edemediğinin farkındayım (Unicorn bulut sunucuları ile iletişim kurmak için UNIX etki alanı yuvalarını kullanıyoruz), ancak biriktirme işleminin tam olarak bunu ele almak için tanıtıldığını düşündüm. CPU kuralı başına bu 2 ila 8 Unicorn örneğinin üstesinden gelmek mümkün müdür?