Estamos executando um aplicativo da web Ruby on Rails no Unicorn. Nosso aplicativo não é estritamente vinculado à CPU (temos um sistema Xeon E5645 duplo com 12 núcleos e um valor médio de carga de pico é de cerca de 6). Inicialmente, começamos com 40 funcionários do Unicorn, mas a pegada de memória do aplicativo aumentou com o tempo. Então, agora temos que diminuir o número de processos do trabalhador. Eu pensei que a fórmula padrão (número de núcleos de CPU + 1) também se aplica ao Unicorn, mas meu colega tentou me convencer de que deveríamos reservar mais instâncias do Unicorn por CPU e fornecia esse link . No entanto, não sei exatamente por que precisamos gastar tanta memória em processos ociosos do Unicorn.
Minha pergunta é: qual o motivo de ter mais de uma instância do Unicorn por núcleo de CPU? É devido a alguma peculiaridade arquitetônica do Unicorn? Estou ciente de que os processos ocupados do Unicorn não podem aceitar novas conexões (estamos usando soquetes de domínio UNIX para se comunicar com as instâncias do Unicorn BTW), mas achei que a lista de pendências foi introduzida exatamente para resolver isso. É possível superar essas 2 a 8 instâncias Unicorn por regra de CPU?