the*_*cre 6 memory memory-usage apache-2.2 docker
假设我有一个 docker 主机,其中设置了 50 个容器,每个容器运行一个由 Apache 提供服务的站点。
据我了解,每个容器都会运行一个 Apache 实例,通常每个 Apache 实例每 ram 使用 ~250mb。Apache 然后每个子进程需要几 mb。
假设每个容器都需要完整 Apache 实例的内存,我是否正确?例如。50 个站点需要 50 x ~300mb?
或者 Apache 是否能够在容器之间共享部分内存以提高内存效率?
Docker 是否适合高效的“大规模”托管(例如,大量站点,每个站点都需要很少的资源),其中每个站点都是一个容器?或者只让一个 Apache 容器服务于 50 个站点是否可行?
docker 提供 apache 实例之间的隔离,这可能出于多种原因(例如,如果每个网站由不同的用户管理)而有趣,还可以轻松地将实例重新定位到另一台服务器上。如果您不需要它,您可能只使用一个 Apache 实例就可以获得更好的性能。
隔离意味着资源使用将与使用虚拟机非常相似,除了您不支付虚拟化开销、内存分区开销和操作系统开销。话虽如此,Apache 内存使用量应主要取决于服务器负载,因此,如果将大型服务器拆分为许多小型服务器,则不应期望增加十倍。此外,由于只有一个内核,磁盘缓存在容器之间共享,因此如果您的磁盘访问模式在两个实例之间相似,您会获得一点性能提升。
小智 5
如果我理解您的问题并且关注的是在容器实例之间可以共享哪些内存,那么共享库的该问题的答案是它取决于。
引用:
https://groups.google.com/d/msg/docker-user/wCDC_sXzbks/i1gjlgQbxWEJ
第二个好处是写时复制和页面共享适用于主机上的所有进程,而不管容器如何。例如,将同一个文件映射到内存(比如库或可执行文件)的 1000 个容器将只使用一次内存空间。如果它们写入内存,则只会复制它们写入的页面。第二个好处的警告是文件系统需要知道您的容器正在映射相同的文件。目前,aufs 存储驱动程序(在文件系统层运行)是这种情况,而 lvm/devicemapper 驱动程序(在块级别运行,因此不会受益)则不然。正在开发的 zfs 和 btrfs 驱动程序也将受益于页面缓存。所以我希望在你运行数千个容器的情况下,它们将大的相同文件映射到内存,目前 aufs 驱动程序将为您提供更好的内存利用率。但我们还没有对此进行基准测试。
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |