Вопрос: Как определить оптимальное количество экземпляров ruby ​​thin / mongrel для сервера, количество ядер?


Мы пытаемся развернуть экземпляры mongrel на машине. Какое оптимальное количество экземпляров mongrel для сервера? Поскольку экземпляр может обрабатывать параллельные соединения, я не вижу никакой выгоды при запуске более 1 на ядро. Более того, и потоки будут просто бороться за CPU. Наши предшественники назначили 10 экземпляров для 4 ядер, но я думаю, что это просто вызовет конкуренцию со стороны процессора. Какие-либо окончательные ответы / мнения?

Я видел этот вопрос: Сколько экземпляров mongrel?

Но это действительно недостаточно.


5
2018-01-12 00:58


Источник


Есть ли определенная причина, по которой вы хотите использовать mongrel, а не Phusion Passenger? - bwizzy
Благодарим вас за этот вопрос, потому что он уже находится в производстве, и мы пытаемся выделить тонкие экземпляры для нового сервера, а Phusion находится в нашей дорожной карте, но мы не можем сделать это немедленно. На самом деле мы используем Thin. Я читал, что Thin использует Eventmachine, поэтому он не блокирует IO. - Amala


Ответы:


Сотрудник послал письмо автору тонких, который подтвердил 1 тонкий экземпляр на ядро. Получается более интересным для гиперпотоковых ядер, но это, вероятно, еще один вопрос.

Коллеги заявили, что монгрел блокирует IO. Thin использует eventmachine, чтобы не блокировать IO и использует Mongrel в качестве библиотеки HTTP.


4
2018-01-15 16:20



BTW Это все очень актуально для Rails после 2.2, прежде чем экземпляр приложения был действительно однопоточным и мог принимать только один запрос во время. - Amala


Экземпляры Mongrel могут обрабатывать параллельные соединения, но уверены ли вы, что все кодировки никогда не будут блокироваться? Я помню, что некоторые драгоценные камни все еще существуют, которые блокируют, что может вызвать у вас проблемы.

Вместо того, чтобы искать жесткие правила, я отношусь к измерениям в таких ситуациях. Создайте тест, который предлагает разумную аппроксимацию ожидаемого трафика и сравните различные конфигурации.


1
2018-01-12 01:03



Хорошо спасибо, я нашел некоторые ресурсы, которые говорят, что с версиями Rails из 2.2 Rails потокобезопасны и не будут блокироваться. Но мы работаем 2.1.1. До сих пор я не видел, чтобы блокировка непосредственно на IO ожидала, как вызовы БД. Я вижу, что он блокируется в процессе производства, когда процессор занят. - Amala