noa*_*ale 16 worker-process worker amazon-ec2 amazon-web-services gunicorn
我目前正在尝试确定每个Amazon实例类型的适当工作人数.我曾经经营过一名Gunicorn工人,但事实证明这很慢.
许多开发人员目前正在使用此公式来衡量适合的工人数量:
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,亚马逊对每个实例运行的核心数量并不十分清楚.例如,M1小实例有1个EC2计算单元(1个虚拟核心和1个EC2计算单元)
这基本上意味着什么?它有一个核心?或者它有两个核心?
dhi*_*iva 32
我知道这是一个老问题.但我想我对这个问题有了更好的答案.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
Run Code Online (Sandbox Code Playgroud)
哪里有命令
cat /proc/cpuinfo | grep 'core id' | wc -l
Run Code Online (Sandbox Code Playgroud)
将返回实际CPU核心的总数(n).所以
$(( 2 * `cat /proc/cpuinfo | grep 'core id' | wc -l` + 1 ))
Run Code Online (Sandbox Code Playgroud)
等于2n + 1公式.
这将对所有基于Linux的机器应用2n + 1公式.您不需要知道每种类型的实例或类似的任何工作者的数量.
参考:http://dhilipsiva.com/2015/10/22/appropriate-number-of-gunicorn-workers.html
joh*_*all 16
基于epicbrew的工作,这里是如何启动2N + 1 Gunicorn工作者,其中N = CPU核心数:
gunicorn --workers=$((2 * $(getconf _NPROCESSORS_ONLN) + 1)) wsgi:application
Run Code Online (Sandbox Code Playgroud)
这适用于Linux和macOS!关于John Tells All博客的更多细节.
在亚马逊EC2 m1.small实例类型肯定只有一个虚拟核; 从线程/工作人员的角度来看,您可以完全忽略EC2计算单元(ECU)规范,并按照Amazon EC2实例类型页面上列出的(虚拟)核心数量,乘以所列出的CPU数量(如果适用)对于集群实例).
如果您想避免进行数学运算和/或对该信息进行编程访问,您可能需要查看missingcloud项目 - aws.json数据集在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]},
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12915 次 |
| 最近记录: |