Driver MongoDB menyediakan beberapa opsi bagi klien Mongo untuk menangani error waktu tunggu jaringan berbeda yang mungkin terjadi selama penggunaan. Dalam beberapa kasus, nilai default untuk opsi ini mungkin tidak sesuai dengan kasus penggunaan Anda, jadi sangat penting untuk memahami berbagai opsi waktu tunggu MongoClient untuk menghindari kemacetan yang tidak terduga dalam alur aplikasi Anda dan meningkatkan kinerja.
Mengonfigurasi opsi batas waktu untuk mongo -pemilihan server, koneksi &soketKlik Untuk TweetPada tingkat abstrak, setiap kali Anda menggunakan MongoClient untuk menghubungkan, mengirim, atau menerima permintaan, secara internal menggunakan opsi batas waktu yang telah ditentukan untuk memutuskan berapa lama aplikasi akan menunggu pembentukan koneksi awal atau respons dari server untuk permintaan Anda.
Aplikasi khas berinteraksi dengan server database yang berbeda berdasarkan logika bisnis. Misalnya, riwayat pembayaran Anda mungkin berada di satu cluster database dan catatan analitik Anda di cluster lain. Batas waktu default dapat secara signifikan memengaruhi perilaku aplikasi Anda ketika ada kesalahan jaringan. Jika server analitik Anda sedang down, maka setiap operasi akan menunggu default 30 detik sebelum gagal (yang mungkin atau mungkin tidak sesuai keinginan Anda).
Waktu Seleksi Server Habis
Waktu tunggu pemilihan server adalah jumlah milidetik yang akan menunggu driver mongo untuk memilih server untuk operasi sebelum menyerah dan memunculkan kesalahan.
Opsi ini diperkenalkan di versi terbaru dari driver Mongo generasi berikutnya (versi 3.2.x+ di Java). Untuk setiap jenis operasi dan preferensi pengguna, MongoClient memilih server menggunakan algoritme pemilihan untuk menjalankan operasi.
Untuk operasi tulis pada server mandiri, hanya ada satu server yang tersedia yang dipilih. Dalam kumpulan replika atau sharded cluster, mungkin ada lebih dari satu server yang memenuhi kriteria preferensi pengguna untuk suatu operasi.
Skenario yang memungkinkan di mana waktu tunggu pemilihan server dapat terjadi termasuk – jika jaringan mati atau kegagalan node utama dalam kumpulan replika.
Driver Mongo menggunakan 30-an sebagai nilai default dari batas waktu pemilihan server . Bergantung pada kasus penggunaan, kami dapat menambah atau mengurangi ambang batas ini.
Waktu Koneksi Habis
Waktu tunggu koneksi adalah jumlah milidetik yang akan ditunggu pengemudi sebelum upaya koneksi baru dibatalkan.
Setelah pemilihan server, klien mencoba membuat koneksi dengan server.
Tergantung pada infrastruktur jaringan dan beban pada server, klien mungkin harus menunggu pembentukan koneksi. Skenario yang memungkinkan di mana batas waktu koneksi dapat terjadi – server dimatikan, masalah jaringan, IP/DNS salah, nomor port, dll
Nilai default dari batas waktu koneksi tergantung pada versi dan bahasa driver. Versi driver terbaru Mongo Java &Ruby memiliki batas waktu default 10 detik untuk pendirian koneksi sementara driver NodeJs tidak memiliki batas waktu.
Jika batas waktu terlalu tinggi, Anda berisiko menunda aplikasi Anda. Jika batas waktu terlalu rendah, Anda bisa menyerah terlalu cepat. Lebih baik menguji dengan nilai yang berbeda untuk menemukan batas waktu yang tepat untuk aplikasi Anda.
SocketTimeout
Waktu tunggu soket adalah jumlah milidetik yang dapat digunakan oleh pengiriman atau penerimaan pada soket sebelum waktu tunggu habis.
Setelah membuat koneksi dengan server, klien mengirimkan permintaan ke server dan menerima respons kembali menggunakan koneksi yang sudah dibuat. Secara internal, koneksi menggunakan soket untuk mengirim permintaan klien dan menerima respons
Mongo Java &Nodejs Driver memiliki batas waktu soket default 0s yang berarti pada dasarnya tidak ada batas waktu . Sementara Ruby menawarkan batas waktu soket 5s. Anda tidak ingin membatasi waktu tunggu ini karena operasi yang berbeda akan membutuhkan waktu variabel untuk beroperasi.
Eksplorasi Lebih Lanjut
Opsi MongoClient Timeout bervariasi pada versi dan bahasa driver Mongo yang berbeda. Kami mendorong Anda untuk membaca dokumentasi kelas MongoClient dari driver Anda untuk memahami opsi batas waktu default Anda. Kami telah menyediakan beberapa contoh kode di bawah ini untuk mengilustrasikan konfigurasi timeout di Java dan Ruby.
Pengandar Java MongoDB
List<MongoCredential> creds = new ArrayList<MongoCredential>(); creds.add(MongoCredential.createCredential(username, DBname, password); MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder(); optionsBuilder.connectTimeout(CONNECTION_TIME_OUT_MS); optionsBuilder.socketTimeout(SOCKET_TIME_OUT_MS); optionsBuilder.serverSelectionTimeout(SERVER_SELECTION_TIMEOUT_MS); MongoClientOptions options = optionsBuilder.build(); Mongo m = new MongoClient(new ServerAddress(server , port), creds, options);
Driver MongoDB NodeJs
var uri = ‘mongodb://[username:password@]host[:port1]/[database]’; var options = { server: { socketOptions: { socketTimeoutMS: SOCKET_TIME_OUT_MS, connectTimeoutMS: CONNECTION_TIMEOUT_MS } } }; MongoClient.connect(uri, options, function(err, db) { if(!err) { console.log("We are connected"); } });
Apakah kami melewatkan sesuatu? Jangan ragu untuk memberi tahu kami di komentar di bawah. Jangan lupa untuk mendaftar ke buletin kami untuk menjadi yang pertama menerima kiat seperti ini dan banyak lagi!