码头工人服务性能与单个容器?

时间:2019-06-10 03:59:18

标签: docker docker-swarm

我正在使用docker-swarm运行服务器。但是后来,这些天我问起了docker服务性能。我什至不认为拥有2个以上的实例并扩展副本并不能帮助docker-server提升性能。

例如, 在一个实例中有一个单独的容器 与 带有10个副本的docker服务。

以我的经验,带有单个容器的docker容器表现出更好的性能(这是从mysql获取数据并将其发送回前端。等等)。

我是否对Docker容器/服务性能有误解?

3 个答案:

答案 0 :(得分:0)

您的问题中有三个问题。

第一个答案是“无”,另外两个答案是“取决于” :)够狡猾的,让我们看看您的要求是什么...

问题1:单个容器与具有1个副本的服务对性能的影响是什么?

A1:0.000n%。您的单副本服务将仅启动……一个副本。答案为0.000n%的原因是因为Swarm在Docker引擎中只需要一点内存和cpu,这可能会影响您的整体性能

第二季度:群体网络对性能的影响如何?

A2:现在,您正在比较由Swarm Overlay网络系统引起的通信的网络性能。在大多数情况下,性能命中率将接近0。Swarm使用的默认覆盖图是VXLAN。由于每个数据包都需要封装/解封装,因此对性能的影响很小。如果您有很多副本和很短的连接(请考虑:无状态api会收到很多请求),则入口负载平衡器可能会涉及一些开销。因此,“取决于”

第3季度:该应用程序的单个副本消耗大量的cpu和ram,而该应用程序的多个副本则消耗少量的ram和cpu。

A3:这要看情况,但这不是Docker(大量)问题。一些应用程序(无状态,不依赖于“单次访问”外部服务,受到大量请求的困扰,在并行运行时(水平扩展)将表现出色。一些应用程序的运行情况较差,需要垂直扩展(很少有实例,很多mem和cpu)。请记住,垂直缩放很难超过某个点...

希望这对您有帮助...

答案 1 :(得分:0)

您在这里遗漏了重点。

服务复制不是在解决性能问题,而是在解决高可用性问题。
如果一个复制失败,则该请求将仅回退到其他可用复制。这是使用协调器的原因之一。

当然,使用协调器会减慢一点的访问量,但是这里所说的性能不会降低50%!

事实上,即使在现实生活中,所有事物都一样。去本地商店买东西总是比在线购物和等待交货快。但是,您不确定本地商店是否有想要购买的东西。相反,如果您在一家受欢迎的网上商店购物,那么几乎可以肯定,您会在第一次尝试时就能得到想要的东西。您只需要再等一会。

答案 2 :(得分:0)

也许这与SWARM Very poor performance for ingress network with lots of parallel requests

有关 <块引用>

swarm 模式入口由 IPVS 处理,连接通过覆盖入口网络分派到后端任务。但由于它是单节点设置,因此不会由于覆盖网络中使用的 VXLAN 标头而导致性能下降。唯一可能的原因可能是 IPVS,它可能需要针对您的情况进行性能调整。

对于那些认为是网络问题的人来说,也许在端口下使用 mode:host 可以帮助绕过 ipvs 限制(但是你需要一个外部负载均衡器来支持你的群)

ports:
   - target: 80
     published: 80
     protocol: tcp
     mode: host