Wir betreiben eine Ruby on Rails-Web-App unter Unicorn. Unsere App ist nicht streng an die CPU gebunden (wir haben ein duales Xeon E5645-System mit 12 Kernen und einen Spitzenlast-Durchschnittswert von etwa 6). Wir haben anfangs mit 40 Unicorn-Mitarbeitern angefangen, aber der Speicherbedarf für Anwendungen hat sich im Laufe der Zeit erhöht. Jetzt müssen wir also die Anzahl der Arbeitsprozesse senken. Ich dachte, dass die Standardformel (Anzahl der CPU-Kerne + 1) auch für Unicorn gilt, aber mein Kollege versuchte, mich davon zu überzeugen, dass wir mehr Unicorn-Instanzen pro CPU reservieren sollten, und stellte diesen Link bereit . Ich bin mir jedoch nicht ganz sicher, warum wir so viel Speicher für inaktive Unicorn-Prozesse benötigen.
Meine Frage ist: Was ist der Grund, mehr als eine Unicorn-Instanz pro CPU-Kern zu haben? Liegt es an einer architektonischen Besonderheit von Unicorn? Ich bin mir bewusst, dass ausgelastete Unicorn-Prozesse keine neuen Verbindungen akzeptieren können (wir verwenden UNIX-Domänensockets, um mit Unicorn-Instanzen zu kommunizieren), aber ich dachte, dass das Backlog genau eingeführt wurde, um dies zu beheben. Ist es trotzdem möglich, diese 2 bis 8 Unicorn-Instanzen pro CPU-Regel zu überwinden?