【发布时间】: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