Какое количество работников Gunicorn подходит для каждого типа экземпляра Amazon?
в настоящее время я пытаюсь выяснить, какое количество работников подходит для каждого типа экземпляра Amazon. Я использовал одного работника Gunicorn, однако это оказалось довольно медленным.
многие разработчики в настоящее время используют эту формулу, чтобы оценить, сколько работников будет подходящим:
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
проблема в том, что Amazon не совсем ясно, сколько ядер работает каждый экземпляр. Например, небольшой экземпляр M1 имеет 1 вычислительную единицу EC2 (1 виртуальное ядро с 1 вычислительной единицей EC2)
что это по сути значит? Что у него одно ядро? или что у него два ядра?
4 ответов
на Amazon EC2 m1.small
тип экземпляра определенно имеет только одно виртуальное ядро; с точки зрения потока/рабочего вы можете игнорировать EC2 вычислительный блок (ECU) спецификация полностью и взять указанное количество (виртуальных) ядер на типы инстансов Amazon EC2 страница буквально, умножая на количество перечисленных процессоров, где это применимо (только для экземпляров кластера).
Если вы хотите избежать выполнения математики и / или иметь программный доступ к этой информации, вы можете взглянуть на missingcloud - в aws.в JSON dataset имеет поле ядер в instance_types сбор, например:
"instance_types" : {
"m1.small" : {
"compute_units" : 1,
"cores" : 1,
"gpus" : 0,
"ramMB" : 1700,
"storageGB" : [10, 160],
"i/o" : "moderate",
"ebs_optimized_iopsMbps" : 0,
"arch" : [32,64]},
...
}
Я знаю, это старый вопрос. Но я думаю, что у меня есть лучший ответ на этот вопрос. Gunicorn docs предполагает, что 2n+1 [gunicorn -w <2n+1> myapp:wsgi
] является хорошей догадкой для количества рабочих (да, n = количество ядер). Я придумал крошечный сценарий оболочки, чтобы применить эту формулу. Все что вам нужно сделать это:
gunicorn -w $(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 )) myapp:wsgi
команд
cat /proc/cpuinfo | grep 'core id' | wc -l
вернет общее количество фактических ядер процессора (n). Так что
$(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 ))
приравнивается к формуле 2n+1.
это примените формулу 2n+1 ко всем машинам на базе linux. Вам не нужно знать количество рабочих для каждого типа экземпляра или что-то в этом роде.
ссылка: http://dhilipsiva.com/2015/10/22/appropriate-number-of-gunicorn-workers.html
дом на epicbrew это работа, вот как запустить 2n + 1 Gunicorn рабочих, где N = количество ядер процессора:
gunicorn --workers=$((2 * $(getconf _NPROCESSORS_ONLN) + 1)) wsgi:application
это работает как на Linux, так и на macOS! Более подробно о Джон рассказывает всем блог.
простой способ увидеть, сколько процессоров обнаружено, чтобы запустить сверху и нажмите "1", чтобы показать количество процессоров. Вы увидите cpu0, cpu1, cpu2 и т.д.