2017-08-15 24 views
8

我在托管在Kubernetes集群中的容器中使用了uwsgi。 UWSGI支持传统的master/slave architecture为应用程序提供更好的可用性,但我的问题是,我是否应该使用此功能?这是否需要在Kubernetes窗格中有多个进程/线程?

换句话说,当我需要更多的进程来处理和计算请求时,我应该增加群集中的pod数量还是应该使用UWSGI的主/从模式来响应请求?

+0

我想如果你增加基于请求你获得更好的性能 – Efazati

回答

4

如果应用程序在服务每个HTTP请求时(例如Django)阻塞,请注意有足够的线程/进程/窗格来保持可用性。如果您使用水平吊舱自动调节器,将会有一些吊舱启动时间,并且我发现在高流量应用程序中,每个吊舱(同一容器)内的uwsgi和应用程序的可用性都更好,而单独的nginx吊舱当所有uwsgi工作人员都忙时,做反向代理和请求池。 YMMV,但是在一天结束时,可用性比坚持单一过程每荚规则更重要。只要理解这些缺点,例如同一个容器内的进程之间的隔离度较低。日志以每个容器为基础可用,因此使用内置的kubectl日志功能不会在同一容器中的任何内容之间进行隔离。

+0

我的+1。我对uwsgi和Django也有同样的感受。如果它阻止了HTTP请求,则需要拥有多个进程IMO。 –

3

在Kubernetes中管理此功能的推荐方法是根据工作负载要求增加POD的数量。

+1

谢谢。这意味着容器内应该只有一个线程/进程? –

+1

是的,只有一个过程是容器的最佳实践。进程可以有多个线程在里面。 – sfgroups

2

我们使用部署模型,其中基于django的应用程序由gunicorn和几个工作进程提供。我们进一步尝试将此容量扩展到2-3个副本,并看到性能得到提升。

这完全取决于什么适用于您的应用程序。

缩放窗格的优点是可以动态配置它,因此不会浪费资源。

相关问题