【问题标题】:MongoDB Response Slower on Amazon EC2 Server Than LocalhostAmazon EC2 服务器上的 MongoDB 响应比 Localhost 慢
【发布时间】:2015-09-28 19:17:34
【问题描述】:

我在本地服务器和测试 Amazon EC2 服务器上加载了相同数量的数据 (~100kb),但在 EC2 上的响应速度慢了 2 倍。两者都在同一台机器上运行 Apache 2 和 MongoDB。在我的本地服务器上,响应时间约为 209 毫秒,而 EC2 上的响应时间约为 455 毫秒。

我设置了一个简单的查询和 AJAX 调用,它根据设备的当前视口抓取点数据以显示在地图上。

如何调试此问题?我怎样才能让它和我的本地服务器一样快?我什至尝试尝试不同类型的实例以确保规格相同,但没有运气。我也意识到这可能是因为网络延迟。

本地计算机规格:

  1. 英特尔酷睿 i5 @ 3.30GHz
  2. 8GB 内存
  3. 64 位 Windows 8

Amazon EC2 规格 (m4.large):

  1. 2.4 GHz Intel Xeon Haswell(2 个 vCPU)
  2. 8GB 内存
  3. 亚马逊 Linux

【问题讨论】:

    标签: mongodb amazon-ec2


    【解决方案1】:

    对 EC2 的远程查询不太可能像本地服务器一样快地返回 AJAX 查询的结果,因为它有网络延迟,而您的本地服务器没有。测量 AJAX 处理程序中从查询开始到准备返回数据的时间点,以获得有意义的基线进行比较。

    MongoDB 对 RAM 和磁盘中的数据非常敏感。根据您配置 EC2 实例的方式以及本地硬件,您的本地硬件速度更快的可能性很大。 EC2 实例可以配置为使用 SSD 存储,并且您可以配置有保证的 IOPS 数据。

    100KB 是结果集的大小,还是形成结果集所需的数据量?如果您处理 4GB 的数据以获得 100KB 的结果集,则很有可能涉及磁盘 IO。如果您需要拉取的数据量很小,请重复测试几次以确保数据完全在 RAM 中。

    最后,如果本地和 EC2 都从 RAM 中提取数据,则很有可能您的本地 CPU 内核比 EC2 CPU 内核快,并且您的 RAM 访问速度也更快。 EC2 旨在提供低成本的商品硬件。开发人员设置通常要快得多。

    如果您无法考虑上述因素导致的速度差异,请使用排除网络延迟的时间测量来更新您的问题,并提供有关您的硬件的更详细规格。更新问题以指明您从 MongoDB 检索的数据是否应该完全在 RAM 中,因为它的大小和实例上的 RAM 量。

    【讨论】:

    • 感谢您的精彩解释。我已经用一些服务器规格更新了我的问题。 100KB 是结果集的大小。我一致认为 EC2 慢了 2 倍。我如何知道数据是否从 RAM 中提取?我该如何检查?
    • 在测试期间监控磁盘 IO。如果任何 IO 都很少,则您的工作集在 RAM 中。 softwarerecs.stackexchange.com/questions/460/…
    • 谢谢。会调查的!
    猜你喜欢
    • 2017-01-06
    • 2014-01-27
    • 2013-04-22
    • 2018-03-23
    • 2015-02-19
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多