Twitter Amazon Web服务微实例-服务器崩溃

Twitter Amazon Web服务微实例-服务器崩溃,twitter,amazon-web-services,crash,Twitter,Amazon Web Services,Crash,我目前正在使用一个AWS微实例作为一个允许用户上传照片的网站的web服务器。两个问题: 1) 当查看我的CloudWatch指标时,我最近注意到CPU峰值,网站目前收到的流量很少,但在这些峰值期间变得完全不可用。这些峰值可能持续数小时,重置服务器并不能消除峰值 2) 尽管看似无关,但每当我在Twitter上发布我的网站链接时,服务器就会崩溃(即,建立数据库连接时出错)。一旦重新启动Apache和MySQL,网站将恢复正常功能 我唯一的猜测是,这个问题不知何故是微实例缺陷的结果。不幸的是,当我升级

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

1) 当查看我的CloudWatch指标时,我最近注意到CPU峰值,网站目前收到的流量很少,但在这些峰值期间变得完全不可用。这些峰值可能持续数小时,重置服务器并不能消除峰值

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

我唯一的猜测是,这个问题不知何故是微实例缺陷的结果。不幸的是,当我升级到这个小实例时,由于micro实例可以有两个EC2计算单元,所以该站点实际上速度较慢


有什么建议吗?

我也有同样的问题:据我所知,问题是当你达到预定的使用率时,AWS会让你慢下来。这意味着它们允许一个小的爆发,但在那之后事情会变得非常缓慢

您可以通过登录并执行一些操作来测试这一点。如果您使用CPU几秒钟,那么整个机箱将变得非常慢。在那之后,你将不得不等待,什么也不做,以使事情恢复“正常”


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

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

首先,这从来不是个好主意。其次,micro的I/O较低,只能突发到2个ecu


如果您想继续使用资源受限的微实例,您需要(a)将MySQL放到其他地方,以及(b)使用类似Nginx的东西而不是Apache,因为它需要的资源要少得多。否则,你应该认真考虑更大的尺寸。

如果你想停留在AWS(Micro实例)的自由层,你应该尽可能地远离EC2实例。 我建议您直接将图像上传到S3,而不是通过web服务器(请参见此处的一些示例:)

S3还可以用于服务大多数web页面(图像、js、css…),而不是薄弱的web服务器。您还可以在S3中将这些文件作为源文件添加到(CDN)发行版中,以提高应用程序性能

另一个可以帮助您卸载工作的服务是SQS(简单队列服务)。您可以将一些请求(例如,上传完成)作为消息发送给SQS,并让您的读者以自己的速度处理这些消息,而不是处理来自用户的在线请求。这是处理多个用户同时使用您的服务造成的瞬时负载的好方法

另一个服务是DynamoDB(托管nosqldb服务)。您可以将大多数当前MySQL数据和查询放在dynamoDB上。亚马逊DynamoDB还有一个免费的层,你可以享受


通过上述组合,您可以让您的微实例处理剩余的几个动态页面,直到您需要随着您不断增长的成功扩展您的服务

我不知道为什么会被否决。请至少添加一条评论,说明错误的原因。谢谢,太好了!谢谢你的建议!我需要研究所有这些选项,找出哪一个最容易实现。我认为在微实例上运行Apache和MySQL可能会导致问题。谢谢你的回复!