你好堆栈溢出的人,
我最近在AWS上部署了我的节点应用程序,使用bitnami提供的MEAN解决方案来设置环境,这是我在此部署的第一个应用程序。
其中一个应用程序功能是查询mongodb(~20k记录),然后对循环此记录包含的数组的每个记录进行一些分析(数组中大约30个对象)。
我希望你能够了解这项操作资源的相对强度,所以现在出现的问题是让我晚上不睡觉:
整个过程在我自己的机器上大约需要27秒(i5 3.4ghz cpu,16gb ram,三星840 evo SSD,linux mint OS),但当我在AWS实例上运行它时(我目前正在使用t2.small) ,但我尝试使用可用的最大实例之一运行相同的操作,产生相同的结果,这个过程大约需要90秒。单独用于过滤和检索20k对象的查询在AWS上大约需要30秒,而在我的机器上则需要9秒。在运行时查看资源时,我可以看到CPU不是100%,因此cpu不是瓶颈(我的CPU信用额不断接近最大值)。通过更改为一个巨大的实例来添加更多ram也没有帮助......
这不像我的机器非常强大或任何东西,但性能差异令人难以置信,这使得该特定功能在AWS上无法使用。
我也尝试将我的AWS卷更改为IOPS,但没有运气..
请这个论坛的专家 - 帮助我解决这个问题的巨大麻烦...
答案 0 :(得分:0)
我不知道您是否检查过NodeJS代码是否存在配置问题。例如,是否存在与另一个数据库失败并延迟响应的后台连接?该应用程序是否正在尝试连接任何其他服务,例如外部邮件服务等......任何需要连接到AWS中任何其他内容的东西都需要正确的VPC /路由配置,我不是说这是问题,而只是覆盖所有基地。
答案 1 :(得分:0)
选择合适尺寸的正确实例。我有经验t2。它需要长时间在重载下。
您没有在您的问题中解释,因此您对AWS i的经验基础会建议您
检查实例中RAM的可用空间
CPU使用率
硬盘空间
要避免这些问题,请参阅MongoDB门户网站
的建议在AWS上托管之前,您必须了解AWS架构 影响表现的东西
尺寸就是一切 - 选择正确的实例类型
根据我们在AWS上实施和支持MongoDB部署的经验,我们发现M4,I2和R3 Amazon ECW实例类型往往是客户部署中最成功和最广泛使用的。
EBS是我们推荐用于 MongoDB 的EC2的一般存储类型,我们将深入探讨如何最好地配置它。 选择磁盘时,我们必须通过请求预配置IOPS(PIOPS)来请求AWS保证我们的每秒输入/输出操作数(IOPS)。
<强>网络强>
由于MongoDB可以从高每秒数据包性能和更低的实例间延迟网络中受益,因此亚马逊的增强型网络功能可以显着提高性能和一致性。 如果您的实例类型支持增强联网功能,我们强烈建议您启用它。