Korzystamy z aplikacji internetowej Ruby on Rails pod Unicorn. Nasza aplikacja nie jest ściśle związana z procesorem (mamy podwójny system Xeon E5645 z 12 rdzeniami, a średnia wartość obciążenia szczytowego wynosi około 6). Zaczęliśmy od 40 pracowników Unicorn, ale z czasem zwiększyło się zużycie pamięci aplikacji. Tak więc teraz musimy zmniejszyć liczbę procesów roboczych. Myślałem, że standardowa formuła (liczba rdzeni procesora + 1) dotyczy również Unicorn, ale mój kolega próbował mnie przekonać, że powinniśmy zarezerwować więcej instancji Unicorn na procesor i podał ten link . Jednak nie jestem do końca pewien, dlaczego musimy poświęcać tyle pamięci na bezczynne procesy Unicorn.
Moje pytanie brzmi: jaki jest powód posiadania więcej niż jednej instancji Unicorn na rdzeń procesora? Czy jest to spowodowane jakąś osobliwością architektoniczną Jednorożca? Wiem, że zajęte procesy Unicorn nie mogą akceptować nowych połączeń (używamy gniazd domeny UNIX do komunikacji z instancjami Unicorn BTW), ale myślałem, że zaległości zostały wprowadzone właśnie w celu rozwiązania tego problemu. Czy można mimo to pokonać 2 do 8 instancji Unicorn na regułę procesora?