我们有一个酒瓶应用程序,是通过古尼科恩,使用事件工作者。我们将应用程序部署在一个kubernetes吊舱中,根据工作负载的不同,我们可以扩展豆荚的数量。
建议的工人人数设置为2 - 4 x $NUM_CPUS。见文档。我以前在专用物理硬件上部署了服务,在这些硬件上,这样的计算是有意义的。在一台4核心机器上,有16名工人听起来不错,我们最终把它撞到了32名工人。
这种计算是否仍然适用于使用异步工作人员的kubernetes吊舱,特别是如下所示:
我该如何设置枪手的人数?
-w 1并让kubernetes通过荚处理缩放?2-4 x $NUM_CPU。单舱还是多舱?更新
我们决定采用第一种选择,这是我们目前的做法。将炮眼的数量设置为1,并通过增加荚数来进行水平缩放。否则会有太多的移动部件,加上我们不会充分利用库伯内特斯的潜力。
发布于 2021-03-10 10:59:16
为更好地了解本问题原作者在2019年选定的最终解决方案
将炮眼的数量设置为1 (-w 1),并通过增加荚数(使用Kubernetes HPA)水平缩放。
考虑到Kubernetes平台中工作量相关特性的快速增长,例如除了HPA、垂直Pod自动标度(VPA)和多维Pod自动标度(MPA)之外,Kubernetes的某些分布也可能不适用于未来,因此我建议以社区wiki post的形式继续这一线程。
发布于 2019-06-25 11:08:30
我不是开发人员,这似乎不是一个简单的任务,但是为了您的考虑,请遵循通过优化Gunicorn配置,以获得更好的性能。。
此外,在kubernetes中,由于CPU利用率和(Python如何与Gunicorn和Kubernetes进行扩展?),有不同的机制来扩展您的部署,比如HPA。
您也可以使用Pod和容器的资源请求和限制。
根据Gunicorn文档
不要将员工的数量与您希望拥有的客户数量相比较。Gunicorn应该只需要4-12个工作进程来处理每秒数百或数千个请求。Gunicorn依靠操作系统在处理请求时提供所有负载平衡。通常建议使用(2 x $num_cores) + 1作为开始工作的工人数量。虽然不太科学,但公式基于这样一种假设:对于给定的核心,一个工作人员将从套接字读取或写入,而另一个工作人员正在处理请求。
# 更新
根据您的方法,您可以选择不同的解决方案(部署、守护进程)--所有上述语句都可以通过根据将CPU资源分配给容器和Pods处理在kubernetes中实现
CPU请求和限制与容器相关联,但是将Pod看作具有CPU请求和限制是有用的。Pod的CPU请求是Pod中所有容器的CPU请求的总和。同样,Pod的CPU限制是Pod中所有容器的CPU限制之和。
注意:
CPU资源以CPU单元来度量。一个CPU (以Kubernetes为单位)相当于: f.e。1 GCP核心。
另一方面,您可以考虑使用其他不同的解决方案,比如脑性,它使您可以创建用户定义的策略,以增加或减小集群中节点池的大小。
GKE的集群自动分频器根据要运行的工作负载的要求自动调整集群大小。启用自动标度后,如果创建了无法运行的新Pods,则GKE会自动向集群中添加一个新节点;相反,如果群集中的一个节点利用率不足,并且可以在其他节点上运行其Pods,则GKE可以删除该节点。
请记住,这个问题非常笼统,没有一个好的答案。您应该根据您的需求、负载、活动、容量、成本来考虑所有的问题.
希望能帮上忙。
https://stackoverflow.com/questions/56748782
复制相似问题