接続が枯渇した ApsaraDB for MongoDB インスタンスは、新しい接続リクエストを拒否します。このトピックでは、接続枯渇の問題に関するトラブルシューティング方法について説明します。
症状
許可される最大接続数は、インスタンスタイプによって異なります。詳細については、「インスタンスタイプ」をご参照ください。
-
アプリケーションが突然データベースに接続できなくなります。
-
mongo シェルでの接続が、ホワイトリストが正しく設定されていても、次のエラーで失敗します:
2019-07-10T10:30:43.597+0800 E QUERY [js] Error: network error while attempting to run command 'isMaster' on host 'dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717' : connect@src/mongo/shell/mongo.js:328:13 @(connect):1:6 exception: connect failed -
Data Management Service (DMS) での接続が、ホワイトリストが正しく設定されていても、エラーで失敗します:
DMS cannot establish a connection with the MongoDB server. Check the connection address, network connectivity, and whitelist settings, and then try again. Original error: Timed out after 3000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=xxx:60276, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]} For common causes of logon failures, see https://www.alibabacloud.com/help/knowledge_detail/52244.html
接続枯渇の確認
-
レプリカセットインスタンス または シャードクラスターインスタンス ページに移動します。ページ上部でリソースグループとリージョンを選択し、ターゲットインスタンスの ID をクリックします。
-
左側のナビゲーションウィンドウで、監視情報 をクリックします。
-
監視情報 ページで、インスタンスの [接続使用率 (%)] メトリックを表示します。
説明インスタンスがシャードクラスターインスタンスの場合、ページの右上隅でアプリケーションが使用する [mongos] ノードを選択します。
各種インスタンスタイプの最大接続数については、「インスタンスタイプ」をご参照ください。
ソリューション
すべての接続を一時的に解放するには、「インスタンス、コンポーネント、またはノードの再起動」ができます。問題の再発を防ぐために、再起動後に次のアクションを実行してください:
インスタンスを再起動すると、そのノードのローリングリスタートがトリガーされます。各ノードで約 30 秒の瞬断が発生します。この瞬断は、インスタンスに多数のコレクション (10,000 以上) が含まれている場合、より長く続く可能性があります。再起動する前に、ご利用のアプリケーションに再接続メカニズムがあり、この一時的な停止を処理できることを確認してください。
-
接続プールを適切に設定します。詳細については、「クライアントからの接続数を制限する」をご参照ください。
-
「接続元を分析」します。ワークロードが原因で接続が枯渇している場合は、インスタンスタイプをスペックアップします。詳細については、「インスタンス構成の変更」をご参照ください。