本文旨在協助您解決串連 MongoDB 執行個體時遇到的問題。建議優先查閱常見報錯章節,以快速定位並解決問題;如果未找到匹配的錯誤資訊,可參考排查步驟,自主診斷和解決串連問題。
串連問題排查步驟
步驟一:網路連接
排查方法
通過以下命令測試到達MongoDB執行個體的網路是否通暢。
-
ping <網域名稱>,例如ping dds-xxxx.mongodb.rds.aliyuncs.comping dds-xxx.mongodb.rds.aliyuncs.com PING dds-xxx.mongodb.rds.aliyuncs.com (xxx): 56 data bytes 64 bytes from xxx: icmp_seq=0 ttl=90 time=7.698 ms 64 bytes from xxx: icmp_seq=1 ttl=90 time=7.085 ms 64 bytes from xxx: icmp_seq=2 ttl=90 time=11.006 ms 64 bytes from xxx: icmp_seq=3 ttl=90 time=12.154 ms 64 bytes from xxx: icmp_seq=4 ttl=90 time=9.149 ms圖中樣本表示用戶端與MongoDB執行個體之間網路連通。
-
telnet <網域名稱> <連接埠號碼>,例如telnet dds-xxxx.mongodb.rds.aliyuncs.com 3717root@mongotest:~# telnet xxx.mongodb.rds.aliyuncs.com 3717 Trying xxx... Connected to xxx.mongodb.rds.aliyuncs.com. Escape character is '^]'.圖中樣本表示可以正常解析該網域名稱地址,且3717連接埠可正常通訊。
核查清單
如果網路測試不通,請通過以下方式排查問題及解決。
步驟二:授權與身分識別驗證
步驟三:其他問題核查
常見報錯
|
錯誤資訊 |
報錯原因及解決方案 |
|
|
|
|
可能該執行個體的串連數已經達到上限,無法為新的串連請求建立串連。 解決方案:
|
|
|
MongoDB 驅動程式的等待隊列已滿,可能由於串連池設定較小或出現高並發請求等原因導致,從而無法提供可用串連。 解決方案:
|
|
|
並發串連過多時,可能會耗盡可用會話。 解決方案:
|
|
請檢查執行個體串連地址是否正確,串連地址說明,請參見: |
|
Elastic Compute Service執行個體通過私網串連ApsaraDB for MongoDB失敗。 解決方案:
|
|
|
|
|
當前寫入資料的節點不是主節點(Primary節點)。 原因:僅主節點可以執行寫操作。如果您的業務之前通過主節點(Primary節點)的地址串連,複本集執行個體主備切換後,實際串連的節點角色變成了從節點(Secondary節點),寫入會失敗。 解決方案:
請為業務設計重連機制和異常處理能力,串連閃斷後可自動重連,保障業務穩定運行。 |
|
|
磁碟滿導致執行個體鎖定。 解決方案:解決因磁碟空間耗盡導致的鎖定或無法寫入問題。 |
|
|
|
|
資料庫帳號的密碼中包含特殊字元 |
|
|
ApsaraDB for MongoDB不支援 |