基于Node.js的表达应用程序在ec2微实例上非常慢

时间:2014-05-11 22:08:27

标签: node.js amazon-web-services amazon-ec2

以下是设置:

  • ec2 micro instance
  • MySQL 5.6
  • Redis服务器
  • Node.js(基于快递的应用)
  • Nginx作为反向前端代理。

速度慢。非常慢。我知道它是一个微观实例,你可以得到你付出的代价(考虑到它是免费的)。

我最终甚至使用了一个用于MySQL的交换文件,它的速度非常慢,以至于它无法使用。我应该启动2个媒体实例(1个用于db / redis,1个用于app服务器)?保持一切并将其升级为大型实例?

另外,我应该寻找什么? MySQL的RAM更多,应用服务器的CPU更多?任何输入都会非常有用(特别是过去曾使用类似设置的那些)。

1 个答案:

答案 0 :(得分:1)

请记住,EC2 micro实例会对cpu进行限制 - 可能会有一些浪费但是如果你在微实例上放置一致的cpu负载,它会降低压力。它们实际上是为开发而设计的 - 我之前使用微实例作为Web服务器,并且当负载上升时它们已经扼杀了价格 - 基本上停止了。

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

也就是说,如果您打算扩展您的应用程序,试图将所有内容保存在一个虚拟化服务器上​​往往不能正常工作。 EC2目前有许多不同的实例类型,针对不同的使用场景进行了优化,不同地强调了CPU,内存,本地磁盘或网络容量。缩放应用程序的node.js / nginx端与MySQL和Redis非常不同。

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