文章主题: Galaxy 文档

扩展

了解如何通过扩展提高应用程序的性能

应用程序的扩展和调整大小取决于应用程序的架构和性能特性。随着应用程序的增长,它们通常需要更多资源才能保持良好的性能。Galaxy 通过提供垂直和水平资源扩展来适应增长。

使用 Galaxy 进行扩展不会导致停机时间;只要您始终保持至少一个容器持续运行,您的用户就不会遇到服务中断。

需要关注什么



我们建议您在应用程序的容器使用率超过 70% 内存、80% CPU 或持续飙升至 100% CPU 时进行扩展。使用 Galaxy 的性能图表跟踪一段时间内的资源使用情况。


Performance Graph

如何扩展



默认情况下,新应用程序部署到紧凑型容器。紧凑型容器适用于小型应用程序。对于大型代码库,我们建议您在标准容器上运行应用程序。

垂直扩展 通过扩展每个容器的大小来增加应用程序的可用资源。当您的应用程序需要的 CPU 或 RAM 超出当前容器大小能够处理的范围时,使用此扩展方法。如果处理单个用户/连接需要的内存/CPU 超过当前使用的容器大小所能容纳的范围,则需要进行垂直扩展,即使使用时间不长。

考虑更改您的 垃圾回收设置,以充分利用更大尺寸的容器。

垂直扩展最适合一次性更改,即您不需要经常更改容器大小的情况。

垂直扩展会重新启动所有容器。如果您调整容器的大小,该容器将重新启动。


Vertical Scaling


请注意,较大的容器重新启动可能需要稍长时间。

水平扩展 通过添加更多容器来增加应用程序的可用资源。当使用量或流量突然增加导致应用程序性能下降时,这很有用。


Horizontal Scaling


如果您需要逐步且频繁地进行扩展和缩减,建议使用水平扩展。

一个好的经验法则是使用能够处理单个用户负载的最小容器大小,并在此基础上进行水平扩展。

水平扩展不会重新启动您的容器。

垃圾回收



您可能需要更改 Node 的垃圾回收设置以获得最佳性能。在此上下文中,垃圾回收是指自动内存管理。代码不再使用的对象占用的内存将被释放以供容器内的一般使用,尽管所需的检查可能会带来性能成本。

Node(为 Meteor 提供动力的 JavaScript 引擎)具有强大的垃圾回收器,可以通过各种命令行选项进行调整。其中一个最重要的旋钮是“最大旧空间大小”设置,它告诉 Node 允许内存堆的最大部分增长到多大。在我们的环境中,Node 的默认设置是允许此空间略超过 1 GB(1400 MB)的内存。

您可以通过在您的 settings.json 文件 中设置环境变量 $GALAXY_NODE_OPTIONS 来控制此选项(更一般地说,控制任何可以在命令行中控制的 Node 设置)。--max-old-space-size 标志的值是以兆字节为单位的整数。例如,要为旧空间大小分配 2000MB,请将 GALAXY_NODE_OPTIONS 设置为 --max-old-space-size=2000。(我们之前为此目的使用了 NODE_OPTIONS 变量,但 Node 8(在 Meteor 1.6 中)使用该名称用于类似目的,该目的不允许调整垃圾回收参数。)

请注意,虽然这通常是 Node 进程内存使用量最大的一部分,但它并不控制 Node 进程的整个内存占用。此外,如果您的进程派生其他子进程,它们将在容器的内存限制内使用自己的内存。

双容器和四核容器的用户可能希望将此标志设置为高于其默认值 1400 MB,以充分利用其容器的内存。

相反,标准容器和紧凑型容器的用户可能希望降低此设置,以确保其 Node 进程尽最大努力收集足够的垃圾以保持在容器限制内。

我们目前正在调查每种容器类型的最佳默认值,以便为我们的用户设置默认值。我们欢迎您提供 反馈,说明在您自己的体验中什么最有效。

更新于:2024/07/15

这篇文章对您有帮助吗?

Share your feedback

Cancel

谢谢!