What is the appropriate number of Gunicorn workers for each Amazon Instance Type?
我目前正在尝试找出每种Amazon实例类型对应的工作人员数量。我曾经经营过一个枪械工人,但事实证明这相当缓慢。
许多开发人员目前正在使用此公式来衡量有多少工人适合:
1 | NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES |
我遇到的问题是,Amazon对于每个实例运行的核心数量并不十分清楚。例如,M1小实例有1个EC2计算单元(1个虚拟核心和1个EC2计算单元)
这本质上是什么意思?它有一个核心?或者它有两个核心?
我知道这是个老问题。但我想我对这个问题有一个更好的答案。Gunicorn Docs建议2n+1[
1 | gunicorn -w $(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 )) myapp:wsgi |
命令的位置
1 | cat /proc/cpuinfo | grep 'core id' | wc -l |
将返回实际CPU核心的总数(n)。所以
1 | $(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 )) |
等于2n+1公式。
这将对所有基于Linux的机器应用2n+1公式。您不需要知道每种类型的实例或类似实例的工作人员数量。
参考:http://dhilipsiva.com/2015/10/22/appropriate-number-of-gunicorn-workers.html
基于Epicbrew的工作,下面介绍如何启动2n+1 Gunicorn Workers,其中n=CPU核心数量:
1 | gunicorn --workers=$((2 * $(getconf _NPROCESSORS_ONLN) + 1)) wsgi:application |
这在Linux和MacOS上都有效!约翰告诉所有博客的更多细节。
Amazon EC2
如果您希望避免进行数学运算和/或对该信息进行编程访问,您可能需要查看MissingCloud项目-aws.json数据集在实例类型集合中具有一个核心字段,例如:
1 2 3 4 5 6 7 8 9 10 11 12 | "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]}, ... } |
查看检测到多少CPU的一个简单方法是运行top并按"1"显示CPU的数量。您将看到CPU0、CPU1、CPU2等。