我目前正在使用AWS微型实例作为网站的网络服务器,允许用户上传照片。两个问题:
1)在查看我的CloudWatch指标时,我最近注意到CPU峰值,此时网站收到的流量非常少,但在这些峰值期间变得完全无法使用。这些峰值可持续数小时,重置服务器不会消除峰值。
2)虽然看似无关,但每当我在Twitter上发布我的网站链接时,服务器都会崩溃(即建立数据库连接时出错)。重新启动Apache和MySQL后,网站将恢复正常功能。
我唯一的猜测是问题在某种程度上是微观实例的不足之处。不幸的是,当我升级到小实例时,由于微实例可以有两个EC2计算单元,因此网站实际上更慢。
有什么建议吗?
答案 0 :(得分:2)
如果您想留在AWS(微型实例)的免费层中,您应尽可能远离EC2实例。
我建议您将图像直接上传到S3,而不是通过您的网络服务器(请参阅此处的示例:http://aws.amazon.com/articles/1434)。
S3也可用于服务大多数网页(图像,js,css ...),而不是弱Web服务器。您还可以将这些文件作为源添加到Amazon CloudFront(CDN)分发中,以提高应用程序性能。
可以帮助您卸载工作的另一项服务是SQS(简单队列服务)。您可以将一些请求(例如,已完成上传)作为消息发送到SQS,让读者按照自己的步调处理这些消息,而不是处理来自用户的在线请求。这是几个用户同时处理您的服务导致handel瞬间负载的好方法。
另一项服务是DynamoDB(托管NoSQL数据库服务)。您可以将大多数当前的MySQL数据和查询放在dynamoDB上。 Amazon DynamoDB还有一个免费套餐,您可以享受。
通过上述组合,您可以让您的微实例处理剩余的少量动态页面,直到您需要随着您的成功而扩展您的服务。
答案 1 :(得分:0)
首先,这绝不是一个好主意。其次,as documented,微处理器具有低I / O,并且只能突发到2个ECU。
如果你想继续使用资源受限的微实例,你需要(a)将MySQL放在其他地方,并且(b)使用类似Nginx而不是Apache的东西,因为它需要的资源少得多。否则,你应该认真考虑选择更大的东西。
答案 2 :(得分:-1)
我遇到了同样的问题:据我所知,问题在于,当您达到预定义的使用时,AWS会降低您的速度。这意味着他们允许小爆发,但之后事情将变得非常缓慢。
您可以通过登录并执行某些操作来对其进行测试。如果你使用CPU几秒钟,整个盒子将变得非常慢。在那之后,你将不得不等待任何事情,以使事情恢复“正常”。
这是我选择VPS而不是AWS的主要原因。