Мы запускаем веб-приложение Ruby on Rails под Unicorn. Наше приложение не привязано строго к процессору (у нас двойная система Xeon E5645 с 12 ядрами, а среднее значение пиковой нагрузки составляет около 6). Сначала мы работали с 40 работниками Unicorn, но объем памяти приложений со временем увеличивался. Итак, теперь мы должны уменьшить количество рабочих процессов. Я думал, что стандартная формула (число ядер процессора + 1) применима и к Unicorn, но мой коллега пытался убедить меня, что нам следует резервировать больше экземпляров Unicorn на процессор, и предоставил эту ссылку . Тем не менее, я не совсем уверен, зачем нам тратить столько памяти на незанятые процессы Unicorn.
Мой вопрос: что является причиной наличия более одного экземпляра Unicorn на ядро процессора? Это связано с какой-то архитектурной особенностью единорога? Я знаю, что занятые процессы Unicorn не могут принимать новые соединения (мы используем доменные сокеты UNIX для связи с экземплярами Unicorn, кстати), но я думал, что для решения этой проблемы было введено отставание. Можно ли как-то преодолеть это от 2 до 8 экземпляров Unicorn на правило ЦП?