【问题标题】:Node.js based express app EXTREMELY slow on ec2 micro instance基于 Node.js 的快速应用程序在 ec2 微实例上非常慢
【发布时间】:2014-05-12 12:21:27
【问题描述】:

设置如下:

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

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

最后我什至使用了 MySQL 的交换文件,它太慢了以至于无法使用。我应该启动 2 个中型实例(1 个用于 db/redis,一个用于应用服务器)?将所有内容合二为一并将其升级为大型实例?

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

【问题讨论】:

  • 一个好的答案取决于您的应用程序的资源和使用情况。您已经为内存缓存设计了设置,但是,微型实例上的内存并不多。您可以停止实例并将其切换为小型实例。然后继续努力,直到获得所需的性能。
  • @datasage 所以在这种情况下,我可能(现在)应该把所有东西放在一起,而不是把它分成不同的实例?很公平。我应该把 MySQL 放在 EBS 上吗?
  • 如果您运行的是微型实例,您的 Mysql 数据应该在 EBS 卷上。实例存储在微型实例上不可用。在实例之间拆分服务还有其他原因,但这取决于您当前的负载、正常运行时间要求和成本。

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


【解决方案1】:

请记住,EC2 微型实例会限制 cpu - 可能会稍微激增,但如果您在微型实例上放置一致的 cpu 负载,它会减少。它们真的是为开发而设计的——我以前使用过微实例作为 Web 服务器,并且在负载上升时它们停止运行时付出了代价——基本上停止了。

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

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

就个人而言(这只是我的观点)我会从两个小组件开始,一个是 MySQL 和 Redis,另一个是 node 和 nginx,并仔细监控内存、cpu 和磁盘的使用情况。 EC2(或任何主要的基于云的虚拟实例提供商)的优点在于您可以轻松地进行试验并迁移到另一种实例类型。为了方便起见,我肯定会使用 EBS 卷作为您的数据库,因为这样以后移动它非常容易(更不用说使用卷快照进行备份的备份了)。

【讨论】:

  • 很棒的信息——正是我想要的。价格计算器上的小型实例未针对 EBS 进行优化是否有原因? calculator.s3.amazonaws.com/index.html 试图弄清楚如何设置这一切。
  • 是的,EBS 优化实例旨在支持大容量直通到预置 iops EBS 卷。如果您需要那种级别的性能,您可能需要具有大型实例或更大实例的马力的东西,因此没有真正需要为小型或中型实例提供它。对于您的用例(有人在微型计算机上运行一切),这应该不是问题。
猜你喜欢
  • 2015-11-21
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2013-07-02
  • 2021-06-14
  • 2013-06-19
  • 2017-12-27
相关资源
最近更新 更多