連接是數據庫的重要資源,合理的使用數據庫連接資源能使應用程序的資源利用達到最佳狀態。
數據訪問代理實例內部一共有兩種類型的連接,分別是:
前端連接:應用程序代碼連接數據訪問代理實例的連接配置。
后端連接:數據訪問代理實例連接后端真實物理數據庫的連接配置。
前端連接
前端連接的數量理論上僅受限于數據訪問代理實例節點可用的內存大小和網絡連接數。但在實際的應用場景中,應用程序連接到數據訪問代理實例時,通常會管理有限數量的連接來執行請求的操作,并不會維持很高并發量的持久化長連接(例如,數萬個并發的長連接),因此可認為數據訪問代理實例能接受的前端連接數量是無限制的。
由于前端連接數量不受限制,可以允許有大量空閑連接存在,因此適用于業務端部署應用程序的服務器數量較多,需要同時保持連接到數據訪問代理實例的場景。
雖然前端連接的數量可被認為是無限制的,但從前端連接獲取的操作請求是由數據訪問代理實例的內部線程通過后端連接實際執行,而內部線程和后端連接的數量有限,因此數據訪問代理實例處理請求的整體并發度是有限的。
應用與數據訪問代理的連接底層實現是通過 SLB 創建的,而 SLB 有 900 s 的空閑超時機制,即 900 s 內連接沒有流量的話,連接會被斷開。所以應用使用時可以設置連接池的空閑超時時間小于 900 s,或者通過心跳方式保持連接。
后端連接
數據訪問代理實例的每個節點內部都會創建后端連接池,自動管理和維護到 RDS/OceanBase 實例中物理庫的后端連接。因此,數據訪問代理實例中后端連接池的最大連接數與具體數據庫實例支持的最大連接數直接相關。
您可參照以下公式來計算數據訪問代理實例中后端連接池的最大連接數:
數據訪問代理實例后端連接池的最大連接數 = 向下取整(數據庫最大連接總數 / 物理分庫數 / 數據訪問代理實例節點數),例如某用戶搭配購買了如下規格的 RDS 實例和數據訪問代理實例:2 個 RDS 實例,包含 100 個物理分庫,規格為 4C16G × 2,最大連接數為 4000 × 2;
1 個數據訪問代理專享實例,規格為 16C32G(每 4C8G 為 1 個數據訪問代理節點,即該實例包含 4 個數據訪問代理節點)。
按照以下公式可計算出數據訪問代理實例中后端連接池的最大連接數:
數據訪問代理實例后端連接池的最大連接數 = 向下取整(8000 / 100 / 4)= 20說明最大連接數的評估僅是為了知道最大連接數的設置上限,實際日常使用中,為了減輕數據庫實例的連接壓力,建議留出一定的緩沖余地,使實際最大連接數小于數據庫的上限值。
如何調整后端連接配置
請參考使用文檔:管理物理數據庫連接參數。