每种 Amazon 实例类型的适当 Gunicorn 工作人员数量是多少?
Posted
技术标签:
【中文标题】每种 Amazon 实例类型的适当 Gunicorn 工作人员数量是多少?【英文标题】:What is the appropriate number of Gunicorn workers for each Amazon Instance Type? 【发布时间】:2013-04-05 10:58:11 【问题描述】:我目前正在尝试确定每种 Amazon 实例类型的适当工作人员数量。我曾经运行过一个 Gunicorn worker,但事实证明这很慢。
许多开发人员目前正在使用这个公式来衡量多少工人是合适的:
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
我遇到的问题是亚马逊不太清楚每个实例运行的核心数量。例如,一个 M1 小型实例有 1 个 EC2 计算单元(1 个虚拟核心和 1 个 EC2 计算单元)
这本质上是什么意思?它有一个核心?或者它有两个核心?
【问题讨论】:
【参考方案1】:在 epicbrew's 工作的基础上,这里是如何启动 2N+1 个 Gunicorn 工作人员,其中 N = CPU 内核数:
gunicorn --workers=$((2 * $(getconf _NPROCESSORS_ONLN) + 1)) wsgi:application
这适用于 Linux 和 macOS!更多详情请关注John Tells All blog.
【讨论】:
【参考方案2】:我知道这是一个老问题。但我认为我对这个问题有更好的答案。 Gunicorn 文档建议 2n+1 [gunicorn -w <2n+1> myapp:wsgi
] 是对工人数量的一个很好的猜测(是的,n = 核心数)。我想出了一个小 shell 脚本来应用这个公式。您需要做的就是:
gunicorn -w $(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 )) myapp:wsgi
命令所在
cat /proc/cpuinfo | grep 'core id' | wc -l
将返回实际 CPU 内核的总数 (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
【讨论】:
gunicorn.conf.py 导入多处理; worker = multiprocessing.cpu_count() * 2 + 1 docs.gunicorn.org/en/19.3/configure.html @kev 所以建议使用 .py 而不是 gunicorn.service 文件? @Mr-Programs 不确定它是什么文件类型,但它(仍然)在官方文档中:docs.gunicorn.org/en/19.9.0/configure.html 为什么不简单地使用$(( 2 * `nproc` + 1 ))
来获取可用处理单元的数量?
@Faheel,不知道有这样的命令存在:P【参考方案3】:
查看检测到多少 cpu 的简单方法是运行 top 并按“1”以显示 cpu 的数量。您将看到 cpu0、cpu1、cpu2 等。
【讨论】:
【参考方案4】:Amazon EC2m1.small
实例类型肯定只有一个虚拟核心;从线程/工作人员的角度来看,您可以完全忽略 EC2 计算单元 (ECU) 规范,将Amazon EC2 Instance Types 页面上列出的(虚拟)核心数量乘以列出的 CPU 数量,如果适用(仅与集群实例相关)。
如果您想避免进行数学运算和/或以编程方式访问该信息,您可能需要查看 missingcloud 项目 - aws.json 数据集在 instance_types 集合中具有 cores 字段,例如:
"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 文档甚至以编程方式完成以上是关于每种 Amazon 实例类型的适当 Gunicorn 工作人员数量是多少?的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon EC2 AWS 上更改实例类型后会出现啥问题?
Amazon Web Service(Elastic Beanstalk) 实例类型 t2.large 中的多个请求运行状况下降