我们在db.t2.large实例上使用RDS。 EC2的自动缩放组在白天将数据写入数据库。在高峰时段,我们有大约50.000个HTTP请求,每个请求读/写MySQL数据。
每天都有所不同,但对于今天的例子,在一小时内:
我们在PHP实例中看到“Connect Error(2002)Connection time out out”,大约每分钟187次。
当谈到网络时,我发现了一个潜在的限制:
我尝试将EC2放在不同或相同的AZ中,但这没有效果
在此期间,我可以通过SSH隧道(EC2 - > RDS)从本地工作站连接好。从EC2到RDS也是如此。
PHP脚本在尝试连接5秒后设置为超时,以确保快速响应。对于某些脚本,我现在将此限制增加到15秒。
但是我们在RDS上遇到了哪些限制?在我们开始迁移或更改实例类型之前,我们想知道此问题的根源。我还启用了增强监控功能,以获取有关此问题的更多详细信息。
如果需要更多信息,我很乐意在需要的地方详细说明。
谢谢!
2016年10月25日更新
在推荐数据时,我们将RDS磁盘大小增加到500 GB,这为我们提供了1500 IOPS和3600个突发,它使用了大约1200 IOPS(现在甚至没有爆发),并且超时仍然发生。
如前所述,连接超时设置为5秒和15秒,没有区别。
2016年1月26日更新
我们高峰时段的RDS截图:
2016年1月28日更新
我已将设置sync_bin_log
更改为0,因为最初我认为我们达到了EBS吞吐量限制(GP-SSD 160 Mbit / s),这使我们的磁盘吞吐量和IOPS大幅下降也是较低的,但我们仍然看到连接超时发生。
当我们绘制错误发生的时间时,我们会看到每分钟左右:超过25秒,超时开始发生在大约25秒内,然后再次出现大约35秒没有错误再次启动。这是在我们进入交通的高峰时段。
答案 0 :(得分:0)
显然,正是网络性能阻碍了我们。当我们将RDS实例升级到m4.xlarge(具有高网络性能)时,问题就解决了。
这是我们的最后手段,但它最终解决了我们的问题。