MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongo membuka terlalu banyak koneksi

Anda membuat instance kelas Mongo untuk setiap operasi individual. Itu tidak akan berfungsi karena setiap instance akan membuat dan menahan setidaknya satu koneksi (tetapi secara default, 10) dan koneksi tersebut hanya akan dihapus jika Java GC membersihkan instance Mongo Anda atau saat Anda memanggil close().

Masalahnya adalah bahwa dalam kedua kasus Anda membuatnya lebih cepat daripada ditutup bahkan menggunakan satu utas. Ini akan menghabiskan jumlah maksimum koneksi dengan tergesa-gesa. Perbaikan yang tepat adalah menyimpan satu instance Mongo menggunakan pola tunggal (Mongo.Holder menyediakan fungsionalitas untuk ini, coba Mongo.Holder.connect(..)). "Perbaikan" cepat adalah meningkatkan batas deskriptor file pada mesin Anda sehingga jumlah koneksi maksimum jauh lebih tinggi tetapi jelas Anda pada akhirnya mungkin mencapai batas yang sama. Anda dapat memeriksa maks Anda saat ini menggunakan (di shell) :

db.serverStatus().connections

TL;DR :Perlakukan instance Mongo sebagai lajang dan buat mereka berumur panjang dan Anda emas. Menerapkan MongoFactory dengan metode statis getInstance() yang mengembalikan instance yang dibuat dengan malas akan berhasil dengan baik. Semoga berhasil.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB di 2018 - Setahun dalam Review

  2. golang mongodb (mgo) tidak memasukkan dokumen

  3. menentukan $push lokasi dalam koleksi menggunakan Pymongo

  4. kesalahan mongorestore:Tidak tahu apa yang harus dilakukan dengan file dump

  5. DBRefs (referensi Dokumen Mongo) tidak diambil dengan penuh semangat