當從 Internet 連接到其公共 IP(具有 1Gbps 互聯網連接的 VPC 外部)時,我們與 RDS (Oracle) 的連接非常緩慢。RDS 實體位于啟用了公共 IP 的公共子網中。我從一個大表中做了一個簡單的選擇,當從我的計算機連接到資料庫(通過其公共 IP)時,我得到 300 行/秒,但是從同一個 VPC 內的 EC2,我得到 10000 行/秒要求。我位于法國,rds db 在法蘭克福資料中心,我猜這是由于網路瓶頸。
到目前為止我已經嘗試過:
- 同一 VPC 中的 EC2 連接到 RDS(通過私有 IP),我得到 ~10000 行/秒
- 同一區域的 EC2 -> RDS(通過公共 IP):~10000 行/秒
- 本地計算機 -> RDS(通過公共 IP):300 行/秒
- 本地計算機 -> 與 RDS 在同一 VPC 中的 EC2 堡壘中的 SSH -> RDS(私有 IP):300 行/秒
- 將資料庫復制到巴黎資料中心并從我的計算機通過公共 IP 訪問它:1000 行/秒
我正在使用 gp2 100Go 磁盤運行 t3.small 實體,但我嘗試升級到 m5.large,使用更大的 500Go 磁盤(因為這會增加 IOPS)但我得到完全相同的結果,仍然堅持網路限制。
問題是,我們必須定期將大量資料從本地資料庫復制到 rds 資料庫。從我得到的結果來看,這是由于網路瓶頸造成的,但我想知道是否有人有相同的用例并找到了解決方法。我搜索了堆疊溢位(和其他),發現類似的問題沒有答案:(
我寧愿避免使用昂貴的 Direct Connect,但我不確定 AWS VPN 連接是否會加快速度……
謝謝 !
uj5u.com熱心網友回復:
這是帶寬和延遲的結果,由您與資料庫的連接“距離”引起。
AWS 具有很高的帶寬,但基于資料庫實體的大小存在一些網路限制。但是,更大的影響可能是由于您的計算機(在 Internet 上)和資料庫之間的距離造成的延遲。這是由物理距離和連接兩個端點所需的系統之間的“跳數”造成的。
此外,用于“選擇”資料的協議對于發送資料效率不高。它可能非常“健談”,等待資料確認并且可能未壓縮。
由于您的目標是“定期復制大量資料”,我建議:
- “本地”提取資料(如果您從 Amazon RDS 中提取,則將資料轉儲到 S3 中)
- 壓縮資料(如果可能)
- 將資料復制到目的地(例如到/從 S3)
- 將資料解壓縮并“本地”加載到資料庫中
這將最大限度地減少來自資料庫的 SELECT 的“健談”性質。但是,它可能會增加從提取到加載的時間,因為它正在經歷多個提取/壓縮步驟。
您還可以考慮使用執行增量資料提取的工具,以便不復制整個資料庫(例如 AWS Database Migration Service)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522695.html
上一篇:如果同一商品在不同的日子找到購買
