【问题标题】:nodejs & Mongo application performance problems on AWSAWS 上的 nodejs 和 Mongodb 应用程序性能问题
【发布时间】:2017-05-28 07:17:40
【问题描述】:

大家好,堆栈溢出,

我最近使用 bitnami 提供的 MEAN 解决方案在 AWS 上部署了我的节点应用程序来设置环境,这是我在这里部署的第一个应用程序。

其中一个应用程序功能是查询 mongodb(约 2 万条记录),然后对循环该记录包含的数组(数组中大约 30 个对象)的每个记录进行一些分析。

我希望您了解此操作的资源相对强度,所以现在出现了让我晚上睡不着觉的问题:

整个过程在我自己的机器(i5 3.4ghz cpu、16gb ram、Samsung 840 evo SSD、linux mint OS)上大约需要 27 秒,但是当我在 AWS 实例上运行它时(我目前正在使用 t2.small ,但我尝试使用可用的最大实例之一运行相同的操作,但资源数量荒谬,产生相同的结果)该过程大约需要 90 秒。仅在 AWS 上过滤和检索 20k 个对象的查询大约需要 30 秒,而在我的机器上则不到 9 秒。在运行时查看资源时,我可以看到 CPU 不是 100%,因此 CPU 不是瓶颈(我的 CPU 积分一直接近最大值)。通过更改为一个巨大的实例来添加更多的内存也没有帮助......

这并不是说我的机器非常强大或其他什么,但性能差异令人难以置信,这使得该特定功能无法在 AWS 上使用。

我也尝试将我的 AWS 卷更改为 IOPS,但没有成功..

请这个论坛的专家 - 帮我解决这个令人头疼的问题......

【问题讨论】:

  • 它必须是某事,并且您应该能够使用标准诊断工具查明它。使用iostat -x 1 监控磁盘 I/O 通常会提供很多信息。另外,您是否正确预热了磁盘卷?在达到预期的性能水平之前,需要预热新的或调整大小的卷(除非创建空白,而不是来自快照或通过 AMI)。 (如果这是问题所在,iostat 应该显示很高的 %util,即使吞吐量不是那么高)。

标签: node.js mongodb amazon-web-services amazon-ec2 mean-stack


【解决方案1】:

选择合适大小的合适实例。我有经验 t2.small 在重负载下需要很长时间。

你没有在你的问题中解释,所以我会根据自己对 AWS 的经验向你推荐

检查实例中的可用 RAM 空间

CPU使用率

硬盘空间

要避免这些问题,请参阅 MongoDB 门户的推荐

在您在 AWS 上托管之前,您必须了解 AWS 架构 影响性能的东西

  • 实例大小(内存和 CPU)

大小决定一切 - 选择正确的实例类型

根据我们帮助在 AWS 上实施和支持 MongoDB 部署的经验,我们发现 M4、I2 和 R3 Amazon ECW 实例类型在客户部署中往往是最成功和广泛使用的。

  • 存储/磁盘

EBS 是我们推荐用于 MongoDB 的 EC2 的通用存储类型,我们将深入探讨如何最好地配置它。 在选择磁盘时,我们必须要求 AWS 通过请求预置 IOPS (PIOPS) 来保证我们的每秒输入/输出操作 (IOPS)。

  • 网络

    由于 MongoDB 可以从高每秒数据包性能和较低的实例间延迟网络中受益,Amazon 的增强网络功能可以显着提高性能和一致性。 如果您的实例类型支持增强联网功能,我们强烈建议您启用它。

更多详情 Maximizing MongoDB Performance on AWS

【讨论】:

    【解决方案2】:

    我不知道您是否检查过您的 NodeJS 代码的配置问题。例如,是否存在与另一个数据库的后台连接失败并延迟响应?该应用程序是否正在尝试连接任何其他服务,例如外部邮件服务等...任何需要连接到 AWS 中其他任何东西的东西都需要正确的 VPC/路由配置,我并不是说这是问题所在,而只是涵盖所有基地。

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 2019-10-16
      • 2020-01-28
      • 1970-01-01
      • 2019-04-13
      • 2017-03-14
      • 1970-01-01
      • 2010-12-12
      • 2013-03-02
      相关资源
      最近更新 更多