Docker教程经常说我可以运行更多容器,以提高我的webapp的可用性。然而,这是一个非常宽泛的声明,并没有解释在不同的情况下应该运行多少个容器。我如何知道我是否需要1、5、10、100或1000个容器实例?
示例-我只有一台服务器,正在使用docker运行nginx和php fpm。每个容器一个。有了这个简单的设置,我的webapp就可以正常工作,而且看起来很灵敏。(在同一台服务器上)增加额外的php fpm副本对我有什么好处吗?假设一个容器用于nginx,10个容器用于php-fpm。
据我所知,10个php-fpm容器将简单地在它们之间分配可用的计算资源量。所以我可以有一个资源丰富的容器,也可以有10个资源较少的容器。什么更好,为什么?
在生产环境中,您需要设置某种监控系统来报告错误率和请求延迟。如果请求开始变得慢得令人无法接受,那么您需要建立更多副本和更多硬件。通常情况下,运行的副本数量超过硬件支持的数量或当前负载所需的数量是没有用的。
另一方面,运行2个副本比运行1难得多;运行3或10并不比运行2难多少。所以我建议:
如何知道是否需要1, 5, 10, 100或1000个容器实例?
这完全取决于您的用例或系统负载。如果您有一百个用户,那么容器可能就足够了。
但是,如果没有适当的负载测试,就不能简单地回答这个问题。
所以我可以有一个包含大量资源的容器,也可以有10个资源较少的容器。什么更好,为什么?
许多云提供商建议使用一个资源更少的容器,因为AWS建议使用300到500 MB的内存,这样您就可以在一个实例上运行多个容器。
在MiB中为您的容器定义硬和/或软内存限制。硬和软限制分别对应于任务定义中的内存
和内存预订
参数。ECS建议将300-500 MiB作为Web应用程序的起点。
这两种情况都有利弊。
如果你用大量资源运行你的应用程序的一个Pod,你有一个失败点。如果你的吊舱死了(在某一点上它会死);例如,在滚动更新期间,您将有一个小的停机时间。
如果你有很多pod运行你的应用程序的副本,请考虑到这些是容器,因此除了你的应用程序之外,还有一个基本映像和依赖项。因此,每个副本都是一个以上的基本图像加上您正在部署的依赖项,因此,您在应用程序上花费的资源更多。
通常,最好有多个副本,但你不应该对它发疯。研究一下什么在消耗你的应用程序,设置正确的资源请求。设置HPA以更好地恢复和管理集群资源。
问题内容: 每个命令或Dockerfile中的每个命令都会创建一个容器。如果容器不再运行,则仍可以通过看到它。 我应该担心拥有大量未运行的容器吗?我应该在非运行容器上发行吗? 我不确定这些非运行中的容器会导致哪些性能或内存/存储损失。 问题答案: 未运行的容器除磁盘空间外不占用任何系统资源。 通常,最好自己清理一下,但是如果有很多人坐在那里,那根本就不会降低性能。 如果在运行带有大量已停止容器的D
每个命令或Dockerfile中的每个命令都创建一个容器。如果容器不再运行,仍然可以使用看到它。 我是否应该关注一个庞大的未运行容器列表?是否应该在未运行的容器上发布? 我不确定这些未运行的容器会导致什么性能或内存/存储损失。
关于编译器(GCC)所做的优化,标准做法是什么?每个选项(-O、-O1、-O2、-O3、-Os、-s、-fexpensive-optimizations)有什么不同,我如何决定什么是最优的?
是否有理由使用启动一个文件,或者您应该只使用? 我知道可以启动一个特定的容器,但我指的是在不指定容器的情况下使用它以启动所有yml容器的情况。
我想全面了解一个Docker容器的运行时性能成本。我发现网络的参考文献要慢大约100µs。 我还发现对运行时成本的引用“可以忽略不计”和“接近于零”,但我想更准确地了解这些成本是什么。理想情况下,我想知道Docker抽象的是什么,但需要付出性能代价,以及抽象出来的东西不需要付出性能代价。联网、CPU、内存等。 此外,如果存在抽象成本,是否有方法绕过抽象成本。例如,也许我可以直接挂载磁盘,而不是在D
问题内容: 有没有使用启动文件的理由,还是应该使用? 我了解这可以启动特定的容器,但是我指的是在不指定容器的情况下使用它的情况,这样它就可以启动所有yml容器。 问题答案: 如(2015)中所述 运行传递的命令将覆盖服务配置中定义的命令 。 例如,如果Web服务配置以开头,则用覆盖它。 第二个区别是该命令 不创建服务配置中指定的任何端口 。 这样可以防止端口与已经打开的端口发生冲突。如果确实要创建