EC2 服务器比本地机器慢

Ran*_*dra 2 python amazon-ec2 mongodb apache-2.2

我们一直在尝试对使用大量使用 mongodb 的 python 编写的 web 应用程序进行一些性能基准测试,我们发现了以下内容。

我们尝试使用具有 8 个 ecu 和 15 GB 内存的第一代超大型 ec2 服务器

  • ec2服务器上的python比本地机器至少慢30%
  • 磁盘 I/O 非常慢。mongostat和iostat结果显示磁盘写在1MBpS左右
  • 程序本身运行得比本地机器慢得多

我们一直无法弄清楚为什么会发生这一切。我们所说的本地机器有 8GB RAM 和 i5 处理器。

更新 我们测试 python 的方式是运行一个循环,该循环需要 10 秒才能完成,没有磁盘读写。同样,每次试验至少要多花 30% 的时间。

这与此有关吗?

https://forums.aws.amazon.com/thread.jspa?messageID=66988

Adi*_*ari 7

EC2 机器变慢的因素有很多。磁盘不直接附加到实例。相反,ebs 卷是大型网络磁盘,您向其中写入的任何内容都会通过网络发送到这些磁盘。现在通常延迟非常低,但是,当然,与直接连接到您的机器的东西相比,它会显得很慢。

它是一个虚拟机。无论您做什么,它都必须与其他机器竞争 CPU 周期。如果您使用 Linux,请运行 top 并查看 CPU 窃取百分比。非零数字表示 CPU 竞争激烈。在任何情况下,虚拟 CPU 都不如可比处理器的实际 CPU 快。

另一个个人观察是运气在 EC2 中起着重要作用(是的!)。有时您会得到一个较旧的硬件,但速度没有那么快。另一个个人经验是,有时您会得到 amd opteron 处理器,它们通常不如基于 Intel 的处理器快。我并不是说 AMD 处理器不好,但在这种情况下,英特尔处理器似乎工作得更快。也许他们是新一代。

在 EC2 上维护了 mongo,我完全理解你的痛苦。我建议尽量在内存中保留尽可能多的数据。一般来说,EC2 实际上并不是为垂直扩展而设计的。有很多较小的实例划分工作然后有一个巨大的实例独自完成所有事情是有益的。