Ответ 1
Количество работников, которых вы должны использовать, во многом зависит от того, что делает ваше приложение, и от того, как он делает эти вещи. Там действительно не идеальная формула отношения к ней, к сожалению, которая будет работать в каждом отдельном случае. Это становится еще более актуальным, если учесть тот факт, что у вас есть конечный объем оперативной памяти, на котором вы должны поддерживать свой сервер.
Многие полагают, что CPU Core Count + 1, но это неверно. Вам придется делать тестовые примеры с различным количеством присутствующих работников и посмотреть, как все идет. Обязательно регулярно проверяйте журналы.
В нашей команде мы используем программу Nagios: http://www.nagios.org
Это хорошо работает и может проверять ваш сервер на множество разных вещей, которые могут произойти, и даже предупредить вас. Это может помочь вам при попытке найти идеальный баланс.
Кроме того, иногда есть вещи, которые ваш сервер делает, а просто просто запускает ваши рельсы, возможно, они запускают скрипты или обрабатывают информацию, которая не нужна. Убедитесь, что ваш сервер не выполняет то, что ему не нужно делать, таким образом вы можете экономить много циклов процессора и оперативной памяти, насколько это возможно.
Кроме того, убедитесь, что вы реализуете эту функцию, которую Unicorn имеет, мы делаем в наших проектах, и это бесценно:
Рост памяти Когда рабочий использует слишком много памяти, бог или monit могут отправьте ему сигнал QUIT. Это говорит работнику умереть после окончания текущий запрос. Как только рабочий умрет, мастер размахивает новый, который мгновенно может обслуживать запросы. Таким образом, мы не нужно убивать ваше соединение в середине запроса или запускать штраф. - Взято из: https://github.com/blog/517-unicorn
Я также нашел этот похожий вопрос, который может дать вам некоторое представление:
https://serverfault.com/q/369811/110682
Я надеюсь, что это поможет.