t2.micro EC2 Ubuntu,t2.micro RDS MySQL。 数据库达到〜60个连接后服务器崩溃

所以我有以下设置:

服务器 – t2.micro ECU Ubuntu实例数据库 – t2.micro RDS MySQL实例。

堆栈是一个基本的LAMP堆栈,默认的Apache设置。

我基本上运行一个networking爬虫。 我已经设置了一些基于cronjob的服务器上运行的方法。 我注意到,几分钟后,数据库连接缓慢上升到60,我认为这可能太多了。 60后,当我运行:show processlist;

我得到的所有连接都是命令“睡眠”,而EC2实例没有响应。 我不能ssh进入它,而且它几乎没有反应,直到我停止/启动实例,它改变了IP地址,并导致像45分钟的维护再次之前。

我知道这可能与最大的连接数有关,但我很困惑为什么EC2实例崩溃…? 我监控EC2和RDS仪表板上的所有内容,除了“数据库连接”超出限制外,EC2看起来好像根本不在乎,它在所有事情上的负载都是5%。

应用程序没有logging任何信息,只有access.log和errors.log正在运行,他们似乎没有满,有没有我没有考虑的东西?

我怀疑你可能会运行一个t2实例types的负载过高。 这些实例根据信用系统给予CPU时间,t2.micros在实例类中具有最小的整体CPU能力。 这些学分在t2.micro上以每小时6次的速度累积,使你能够在6分钟内达到100%的CPU核心。 所有其他时间,你只被授予10%的核心。 此外,如果您的实例完全闲置,则只会累积积分。


我认为你正在使用可用的信用快速(在你的networking实例和你的RDS实例),并试图在其他时间运行在太lessCPU的马力,这是导致你的实例基本上挂起由于缺乏资源。


如果您想抽查我的理论,可以查看EC2实例和RDS实例的CloudWatch指标,然后查找以下内容:CPUCreditUsage和CPUCreditUnits。 这些图表将显示您是否积累和/或使用您的积分。


有关更多信息,请参阅此页: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html

您的解决scheme可能会将您的实例中的一个或两个升迁到T2实例类中更大的实例,或者如果需要持续的性能,则可以在类之外完全挑选某些内容。