1

我目前正在使用 AWS 微实例作为允许用户上传照片的网站的 Web 服务器。两个问题:

1) 在查看我的 CloudWatch 指标时,我最近注意到 CPU 峰值,该网站目前接收的流量非常少,但在这些峰值期间变得完全无法使用。这些尖峰可能会持续几个小时,并且重置服务器并不能消除尖峰。

2)虽然看似无关,但每当我在 Twitter 上发布我网站的链接时,服务器就会崩溃(即,建立数据库连接时出错)。重新启动 Apache 和 MySQL 后,网站将恢复正常功能。

我唯一的猜测是这个问题在某种程度上是微实例缺陷的结果。不幸的是,当我升级到小型实例时,由于微型实例可以有两个 EC2 计算单元,该站点实际上变慢了。

有什么建议么?

4

3 回答 3

2

如果您想留在 AWS(微实例)的免费套餐中,您应该尽可能地从您的 EC2 实例上卸载。

I would suggest you to upload the images directly to S3 instead of going through your web server (see some example for it here: http://aws.amazon.com/articles/1434).

S3 can also be used to serve most of your web pages (images, js, css...), instead of your weak web server. You can also add these files in S3 as origin to Amazon CloudFront (CDN) distribution to improve your application performance.

Another service that can help you in off loading the work is SQS (Simple Queue Service). Instead of working with online requests from users, you can send some requests (upload done, for example) as a message to SQS and have your reader process these messages on its own pace. This is good way to handel momentary load cause by several users working simultaneously with your service.

Another service is DynamoDB (managed NoSQL DB service). You can put on dynamoDB most of your current MySQL data and queries. Amazon DynamoDB also has a free tier that you can enjoy.

With the combination of the above, you can have your micro instance handling the few remaining dynamic pages until you need to scale your service with your growing success.

于 2013-03-30T15:33:15.153 回答
0

等等……对不起。您是说您在微型实例上同时运行 Apache和MySQL 服务器吗?

首先,这绝不是一个好主意。其次,如文件所述,微控制器的 I/O 较低,只能突发到 2 个 ECU。

如果您想继续使用资源受限的微型实例,您需要 (a) 将 MySQL 放在其他地方,并且 (b) 使用 Nginx 之类的东西而不是 Apache,因为它需要更少的资源来运行。否则,您应该认真考虑调整更大的尺寸。

于 2013-03-30T05:48:51.893 回答
-1

我遇到了同样的问题:据我了解,问题是当您达到预定义的使用量时,AWS 会减慢您的速度。这意味着它们允许小爆发,但在那之后事情会变得非常缓慢。

您可以通过登录并做一些事情来测试它。如果你使用 CPU 几秒钟,那么整个盒子会变得非常慢。在那之后,您将不得不等待什么都不做,以使事情恢复“正常”。

这是我选择 VPS 而不是 AWS 的主要原因。

于 2013-03-30T00:02:32.757 回答