Подтвердить что ты не робот

Единорог: какое количество рабочих процессов использовать?

Я запускаю приложение Ruby on Rails на виртуальном Linux-сервере, который ограничен 1 ГБ оперативной памяти. В настоящее время я постоянно сталкиваюсь с лимитом и хочу оптимизировать использование памяти. Один из вариантов, который я рассматриваю, - это сокращение числа работников единорога.

Итак, каков наилучший способ определить количество работающих единорогов?

Текущая настройка - 10 рабочих, но максимальное количество запросов в секунду, которое я видел в Google Analytics в режиме реального времени, равно 3 (забито только один раз в пиковое время, в 99% случаев не превышает 1 запрос за второй).

Итак, это предположение о сохранении, которое я могу - на данный момент - пойти с 4 рабочими, оставляя место для неожиданных запросов? Каковы показатели, на которые я должен обратить внимание, чтобы определить количество работников и какие инструменты я могу использовать для этого на машине Ubuntu?

4b9b3361

Ответ 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

Я надеюсь, что это поможет.