Вероятно, это не то, что вы хотите услышать, но: Это зависит от обстоятельств. Я думаю, что даже давать пропорции довольно сложно. Есть много переменных, которые могут влиять на производительность (HW, вероятно, самая большая: оперативная память, количество ядер и т. д.).
Я столкнулся с «похожим вопросом», когда я хотел узнать, какое количество unicorn worker (работников приложений) и воркеров nginx будет лучшим для моего приложения (и какое влияние окажет кэширование).
Лучший способ, который я нашел для ответа на такой вопрос, — запустить несколько тестов. Вот более или менее то, что я сделал:
Я написал скрипт, который запускал скачку Apache (ab
) 3 раза на несколько URL-адресов, которые я хотел проверить.
function run_apache_bench() {
ab -n $N -c $C -g "results/${ID}/root_${1}.tsv" url1
ab -n $N -c $C -g "results/${ID}/index_${1}.tsv" url2
ab -n $N -c $C -g "results/${ID}/show_${1}.tsv" url3
}
На разных контейнерах докера с разным количеством воркеров. (На идентичном оборудовании, которое использовалось в производстве.) Затем я построил результаты с помощью gnuplot и получил что-то вроде этого:
Пример с 2 воркерами unicorn и 1 воркером nginx:
![введите здесь описание изображения](https://i.stack.imgur.com/dhJAB.png)
Пример с 4 воркерами unicorn и 4 воркерами nginx:
![введите здесь описание изображения](https://i.stack.imgur.com/Iw2MX.png)
Бонусный пример: вот резкое улучшение производительности с включением «кэширования матрешки» :)
![введите здесь описание изображения](https://i.stack.imgur.com/PHPtC.png)
Но я хочу указать на некоторые ошибки:
- Я не измерял использование памяти
- Скамья Apache не «запускает» запросы javascript/css (активы), что означает, что я просто измерял рендеринг html.
- Было непросто настроить тесты (автоматизировать создание контейнеров и т. д.).
Надеюсь, это поможет вам.
person
wpp
schedule
05.02.2015