基于Node.js的快速应用程序极其缓慢的EC2微型实例

这是设置:

  • ec2微型实例
  • MySQL 5.6
  • Redis服务器
  • Node.js(基于快车的应用程序)
  • Nginx作为反向前端代理。

这很慢。 非常慢。 我知道这是一个微型实例,你得到你所支付的(考虑到它是免费的)。

我甚至使用了MySQL的交换文件,而且它太慢了,以至于无法使用。 我应该旋转2个中等实例(1为db / redis和一个为应用程序服务器)? 保持一切,并将其升级到一个大的实例?

另外,我应该寻找什么? 更多的RAM为MySQL和更多的CPU的应用程序服务器? 任何input都会非常有用(尤其是那些过去曾经使用类似设置的input)。

请记住,EC2微型实例扼杀cpu – 可以激增一点,但如果你把一致的cpu负载放在一个微型实例,它会油门下来。 他们真的是为开发而devise的 – 我之前使用微型实例作为Web服务器,并且在负载上升时调低了价格的时候付出了代价 – 基本上停止了。

至于你应该使用什么,你真的需要基于对数据库大小,工作集大小,用户数量等进行基准testing和分析的结合来评估自己的需求。

也就是说,如果您打算扩展您的应用程序,试图让所有虚拟化服务器上​​的所有内容都不能正常工作。 目前EC2有多种不同的实例types,针对不同的使用场景进行了优化,各种强调cpu,内存,本地磁盘或networking容量。 缩放应用程序的node.js / nginx一侧与MySQL和Redis大不相同。

个人(这只是我的意见)我会从两个小,MySQL和Redis在一个节点和nginx上开始,并仔细监视内存,CPU和磁盘使用情况。 关于EC2(或任何主要的基于云的虚拟实例提供程序)的优点是您可以轻松地尝试并移至其他实例types。 为了方便起见,我肯定会使用EBS卷作为数据库,因为它可以很容易地稍后移动(更不用说使用卷快照进行备份)。