1

我们正在为其中一个项目评估 ISTIO。在这个项目中,我们有大约 200 个容器和大约 200 个服务。每个容器可能会在副本设置为 2 的情况下启动。因此,总共可能有 400 个容器,因此有 400 个 ISTIO 边车。

在默认设置下,每个 ISTIO 边车使用了 300Mbytes。对于 400 个边车,这将为边车产生 120GB (300Mbutes * 400) 的内存。这似乎比应用程序所需的内存要求还要高。

有两个观察

  1. 内存使用量似乎随着内核数量的增加而增加。在系统上,我们正在尝试,有 88 个内核。目前的理解是每个核心大约需要 1.5 到 2Mbutes。
  2. 内存使用量似乎随着服务数量的增加而增加。在我们正在进行的项目中,我们预计会看到大约 200 项服务。每个服务似乎占用了大约 3MB。

在(1)上,我们(通过谷歌搜索)找到了一个解决方案。解决方案是将特使并发设置为较小的数字。

关于(2),有什么解决办法吗?在我们的项目中,并不是每个容器都与其他容器/服务进行通信。给定的容器可以与一组目标服务(通常大约 5 个左右)对话。给定容器的边车是否可以为容器使用的服务分配内存?

我想知道是否有人对 ISTIO 有类似的问题,以及他们如何解决内存消耗问题。

4

1 回答 1

2

你是对的,#2是一个问题。Istio 邮件列表中对此进行了一些讨论:https ://groups.google.com/forum/#!topic/istio-users/gRP4roSnHtQ

底线是当前的实现,其中每个服务都配置为与其他所有服务通信,是 O(N^2),无法扩展。到目前为止,只有一些(主要是内部的)早期讨论关于修剪 sidecar 配置的各种选项可能是什么,但我认为在这方面可能会很快开始一些工作。

更新Istio 1.1 包含一个新的Sidecar配置资源,可用于此目的。

于 2018-11-01T23:59:10.130 回答