Instans ApsaraDB for MongoDB yang telah mencapai batas maksimum koneksi akan menolak permintaan koneksi baru. Topik ini menjelaskan cara memecahkan masalah tersebut.
Gejala
Jumlah maksimum koneksi yang diizinkan bervariasi tergantung pada tipe instans. Untuk informasi selengkapnya, lihat Instance types.
-
Aplikasi Anda tiba-tiba gagal terhubung ke database.
-
Koneksi melalui mongo shell gagal dengan error berikut, meskipun daftar putih telah dikonfigurasi dengan benar:
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 -
Koneksi melalui Data Management Service (DMS) gagal dengan error, meskipun daftar putih telah dikonfigurasi dengan benar:
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
Periksa kehabisan koneksi
-
Buka halaman Replica Set Instances atau Sharded Cluster Instances. Di bagian atas halaman, pilih kelompok sumber daya dan wilayah, lalu klik ID instans target.
-
Di panel navigasi sebelah kiri, klik Monitoring Data.
-
Di halaman Monitoring Data, lihat metrik Connection Utilization(%) untuk instans tersebut.
CatatanJika instans tersebut merupakan instans kluster sharded, pilih node mongos yang digunakan oleh aplikasi Anda di pojok kanan atas halaman.
Untuk informasi mengenai jumlah maksimum koneksi untuk berbagai tipe instans, lihat Instance types.
Solusi
Untuk melepaskan semua koneksi secara sementara, Anda dapat me-restart instans, komponen, atau node. Untuk mencegah masalah ini terjadi kembali, lakukan tindakan berikut setelah restart:
Restart instans memicu rolling restart pada nodenya. Setiap node mengalami pemutusan koneksi sementara sekitar 30 detik. Pemutusan ini dapat berlangsung lebih lama jika instans berisi banyak koleksi (lebih dari 10.000). Sebelum melakukan restart, pastikan aplikasi Anda memiliki mekanisme reconnect dan mampu menangani gangguan sementara ini.
-
Konfigurasikan kolam koneksi dengan tepat. Untuk informasi selengkapnya, lihat Limit the number of connections from clients.
-
Analyze the source of connections. Jika beban kerja menghabiskan koneksi, lakukan upgrade tipe instans. Untuk informasi selengkapnya, lihat Change instance configuration.