Stiamo eseguendo un'app Web Ruby on Rails sotto Unicorn. La nostra app non è strettamente legata alla CPU (abbiamo un doppio sistema Xeon E5645 con 12 core e un valore medio di carico di picco è di circa 6). Inizialmente abbiamo iniziato con 40 lavoratori Unicorn ma il footprint della memoria dell'applicazione è aumentato nel tempo. Quindi, ora dobbiamo ridurre il numero di processi di lavoro. Ho pensato che la formula standard (numero di core della CPU + 1) si applica anche a Unicorn, ma il mio collega ha cercato di convincermi che dovremmo riservare più istanze Unicorn per CPU e fornito questo link . Tuttavia, non sono esattamente sicuro del motivo per cui dobbiamo spendere così tanta memoria sui processi inattivi di Unicorn.
La mia domanda è: qual è il motivo per avere più di un'istanza Unicorn per core della CPU? È dovuto ad alcune peculiarità architettoniche dell'unicorno? Sono consapevole che i processi Unicorn occupati non possono accettare nuove connessioni (stiamo usando socket di dominio UNIX per comunicare con istanze Unicorn BTW) ma ho pensato che il backlog fosse stato introdotto esattamente per risolvere questo problema. È comunque possibile superare da 2 a 8 istanze Unicorn per regola CPU?