我目前正在使用 AWS 微型实例作为允许用户上传照片的网站的 Web 服务器。两个问题:
1) 在查看我的 CloudWatch 指标时,我最近注意到 CPU 峰值,该网站目前收到的流量非常少,但在这些峰值期间变得完全无法使用。这些峰值可能会持续几个小时,并且重置服务器并不能消除峰值。
2) 虽然看似无关,但每当我在 Twitter 上发布我的网站链接时,服务器就会崩溃(即,建立数据库连接时出错)。重新启动 Apache 和 MySQL 后,网站将恢复正常功能。
我唯一的猜测是,该问题在某种程度上是微实例缺陷造成的。不幸的是,当我升级到小型实例时,由于微型实例可以有两个 EC2 计算单元,因此该站点实际上速度较慢。
有什么建议吗?
最佳答案
如果您想继续使用 AWS(微型实例)的免费套餐,您应该尽可能地从 EC2 实例上卸载负载。
我建议您将图像直接上传到 S3,而不是通过 Web 服务器(请参阅此处的一些示例:http://aws.amazon.com/articles/1434)。
S3 还可以用来服务您的大部分网页(图像、js、css...),而不是您的弱 Web 服务器。您还可以将 S3 中的这些文件作为源添加到 Amazon CloudFront (CDN) 分发以提高您的应用程序性能。
另一个可以帮助您减轻工作负担的服务是 SQS(简单队列服务)。您可以将一些请求(例如,上传完成)作为消息发送到 SQS,并让您的阅读器按照自己的节奏处理这些消息,而不是处理用户的在线请求。这是处理因多个用户同时使用您的服务而造成的瞬时负载的好方法。
另一个服务是 DynamoDB(托管 NoSQL DB 服务)。您可以将当前的大部分 MySQL 数据和查询放在 dynamoDB 上。 Amazon DynamoDB 还提供免费套餐供您使用。
通过上述组合,您可以让您的微实例处理剩余的少数动态页面,直到您需要随着您的不断成功而扩展您的服务。
关于twitter - Amazon Web Service 微型实例 - 服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713233/