Docker容器处理更多的负载

我有一个关于Docker容器的问题。 越来越多的应用程序在同一个虚拟机中的容器,将意味着它将处理更多的负载(大约是容器数量的因素)?

假设我们不明确地将资源分配给容器。 而且我们在同一台机器上运行反向代理(或负载均衡器),它将以循环机制转发请求(到容器)。 如果一个容器的当前吞吐量是1000 tps,那么这是否意味着它将有3000个tps的容器?

有没有人做过性能台标? 任何人都可以分享链接?

问:在同一个虚拟机中增加一个应用程序容器的数量,意味着它将处理更多的负载?

答:这取决于你目前的瓶颈在哪里。

如果您的虚拟机当前正在以100%的CPU工作负载运行,那么抛出更多的容器显然不会增加吞吐量。 它可能会降低您的tps因为需要将额外的CPU资源分配给新容器实例的新进程。

假设您的虚拟机正在低负载运行,RAM和磁盘IO不是问题。 抛出更多的进程可能并不意味着更好的性能,因为问题有时可能是一个低效率的代码。 例如,等待asynchronous调用的响应的线程或者导致整个进程被locking的线程,或者线程正在等待locking,然后可能进一步进行,而另一个线程长时间locking到locking。 等等…

您的应用程序的体系结构和现有的代码瓶颈可能在影响整体性能方面发挥巨大的作用。

问:吞吐量是否会根据容器数量的因素大致增加?

不太可能。 如果1个容器可以做1k tps它并不总是等于n * 1k ,其中n是容器的数量。 这是因为如前所述,有太多的变数需要考虑。

整体性能还取决于您使用的负载平衡器以及如何configuration。

总的来说,使用负载均衡器来编排应用程序的传入请求仍然是值得的。 如果你不喜欢性能增加,那么我会build议做一个代码分析,也可能调查系统的负载,并出来理论为什么发生这种情况。 然后系统地将瓶颈1加1,直到你对表演满意为止。

解锁瓶颈将永远打开另一个新的瓶颈。