RDS连接速度非常慢(Oracle)从Internet连接到其公共IP时RDS示例位于启用了公共IP的公共子网中。我从一个大表中进行了简单的选择,当连接到数据库时,我得到了300行/秒(通过其公共IP)从我的计算机,但从同一个VPC内的EC2,我得到+10000行/秒相同的请求。我位于法国和rds数据库是在法兰克福数据中心,我猜这是由于网络瓶颈。
到目前为止,我已经尝试过:
- 同一VPC中的EC2连接到RDS(通过专用IP),我获得约10000行/秒
- 同一地区的EC2-〉RDS(通过公共IP):约10000行/秒
- 本地计算机-〉RDS(通过公共IP):300行/秒
- 本地计算机-〉EC2 bastion中SSH与RDS位于同一VPC中-〉RDS(私有IP):300行/秒
- 将数据库复制到巴黎数据中心,并从我的计算机通过公共IP访问它:1000行/秒
我正在运行一个带有gp 2 100 Go磁盘的t3.small示例,但我尝试升级到带有更大的500 Go磁盘的m5.large(因为这会增加IOPS),但我得到了完全相同的结果,仍然受到网络限制的限制。
问题是,我们必须定期将大量数据从内部数据库复制到rds数据库。从我得到的结果来看,这是由于网络瓶颈造成的,但我想知道是否有人有相同的用例,并找到了解决方法。我搜索了堆栈溢出(和其他),发现类似的问题没有答案:(
我宁愿避免昂贵的直接连接,我不确定AWS VPN连接是否会加快速度...
谢谢你!
1条答案
按热度按时间flvlnr441#
这是带宽和延迟的结果,而带宽和延迟是由您与数据库的连接的“距离”引起的。
AWS的带宽很高,但根据数据库示例的大小,存在一些网络限制。然而,更大的影响可能来自计算机(在Internet上)和数据库之间的距离所导致的延迟。这是由物理距离和连接两个端点所需的系统之间的“跃点”数所导致的。
此外,用于“选择”数据的协议对于发送数据来说效率不高。它可能相当“健谈”,等待数据的确认,并且可能被解压缩。
由于您的目标是“定期复制大量数据”,我建议:
这将最大限度地减少从数据库执行SELECT的“冗长”特性。但是,由于它要经历多个提取/压缩步骤,因此可能会增加从提取到加载的时间。
您还可以考虑使用执行增量提取数据的工具,这样就不会复制整个数据库(例如AWS数据库迁移服务)。