我已经在亚马逊EC2 (新加坡地区)上发布了我的网站,并使用MySQL RDS实例进行数据存储。除了性能之外,一切都运行得很好。
我的所有查询,特别是select语句,执行起来都很慢。如果我在我的本地PC上检查这个问题,它在那里工作得很好。但是当我尝试从RDS实例中获取数据时,速度非常慢。有些select语句需要2-3秒来获取数据。
我已经适当地调优了所有的表索引,并根据需要进行了规范化/反规范化。我已经在RDS自定义参数组上进行了所有必要的设置(例如,max_connection、buffer等)。我不知道我是否遗漏了什么,但它对我来说并不起作用--性能没有提高。
那么,有人能帮我解决这个问题吗?
发布于 2013-07-16 00:01:51
您的RDS和EC2实例不仅要位于同一地域,还要位于同一可用区,以最大限度地减少延迟,这一点很重要。
我在爱尔兰的EC2上托管了一个应用程序接口,并将数据库移动到我们为另一个项目设置的位于美国弗吉尼亚州的MySQL集群中,每次SQL查询的往返过程使该应用程序接口无法使用。
发布于 2017-12-08 22:14:58
对我来说,这与MySQL无关,而与我在t2.medium
上的实例类型有关。问题是我用完了CPU积分,因为DB上的负载太高了,余额一直在下降,直到最后,我每小时得到的积分远远少于所需的。
下面是我在RDS CloudWatch中看到的CPU Credit Usage:
如果您有相同的问题,可能是时候切换到不同的实例了。实例类型列表如下:
https://aws.amazon.com/rds/instance-types/
希望这能有所帮助。
发布于 2020-09-25 00:15:17
始终应在同一AWS可用区中部署源和rds,以降低网络延迟,并应在VPC中为RDS创建私有端点链路,以通过内部网络连接RDS端点,而不是通过互联网路由。
参考:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html
https://stackoverflow.com/questions/16035958
复制相似问题