处理amazon ec2实例中的I/O请求

jle*_*and 5 javascript io amazon-ec2 amazon-web-services node.js

在学习了节点,javascript和其他所有其他方法之后,我终于要发布我的第一个Web应用程序了.所以我订阅了亚马逊网络服务并创建了一个微型实例,计划在第一年免费套餐,以便让我向全世界提供应用程序.

我更关心隐藏成本.我知道,免费套餐每月为Amazon EC2 EBS提供100万次I/O请求.

事情是,我开始测试我的应用程序ec2实例,检查一切运行正常; 我已经有超过10万个I/O请求.到目前为止,我基本上是唯一一个使用它的人(实例运行了37个小时).

所以我非常害怕如果我的应用程序获得一些流量会发生什么,我不希望在月底有一个巨大的意外账单.

我发现它非常令人惊讶,因为我主要提供静态的东西,我的服务器端代码包括:

  • 从客户端接收搜索请求
  • 1个http请求到一个网站
  • 1个https请求到youtube api
  • 将数据保存到mongoDB
  • 将结果发送给客户端

您对如何大幅降低IO有任何建议吗?到目前为止我没有使用任何其他亚马逊服务,也许我错过了什么?

或者也许亚马逊的免费等级在我的情况下还不够,但那么它能够做到什么呢?我的意思是,我的应用程序毕竟非常简单.

我很高兴能为你提供任何帮助

谢谢!

use*_*109 3

您没有提及您的应用程序的总访问次数。所以我假设你的访问量相当少。

什么是 I/O 请求?单个 I/O 请求是到达 EBS 卷的读/写指令。谨防!大型读/写的执行被分成多个较小的部分,这是卷的块大小。

I/O高的可能原因:

  1. 您的应用程序使用大量 RAM。达到限制后,操作系统开始不断地在磁盘中的交换区域之间来回交换内存。
  2. 这很可能是 mongoDB 搜索的问题。mongoDB 搜索在内部可能是很长的复杂查询。从这个问题的一个答案来看,这个人正在使用 mySQL,这在 24 天内给他带来了 10 亿个 I/O 请求。所以1次数据库搜索可能会产生很多I/O请求。
  3. 缓存被禁用,或者您写入/修改了大量文件。你提到你正在测试。免费服务不适合开发东西。

如果您想知道免费套餐到期后会发生什么,您应该阅读本文。