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

Mengapa MongoDB tidak responsif selama uji beban?

Memperbaikinya:

sudo sysctl net.ipv4.tcp_tw_reuse=1

Kemudian, mulai ulang mongo.

Atau, Anda dapat menambahkannya ke /etc/sysctl.conf (sehingga akan dijalankan saat reboot):

net.ipv4.tcp_tw_reuse=1

Kemudian jalankan ini untuk memuat ulang (tanpa harus mem-boot ulang)

sudo sysctl -p /etc/sysctl.conf

"Perbaikan" ini akan menonaktifkan status timewait untuk soket TCP (seluruh server). Jadi, itu benar-benar bukan perbaikan sama sekali. Namun, hingga mongo mengurangi status timewait mereka menggunakan SO_LINGER, sejumlah besar soket server akan berkumpul dalam status TIME_WAIT dan tetap tidak dapat digunakan untuk koneksi baru. Anda dapat melihat jumlah koneksi dalam TIME_WAIT dengan ini:

netstat -an | grep TIME_WAIT | wc -l

Dengan itu, saya dapat melihatnya gagal pada sekitar 28 ribu koneksi TIME_WAIT. Menggunakan flag kernel ini:

sysctl net.ipv4.ip_local_port_range="18000 65535"

Server gagal pada koneksi 45k. Jadi, untuk mereproduksi kesalahan dengan lebih mudah, Anda dapat menurunkan kisaran menjadi 200 atau lebih kecil.

Jadi, hasil dari ini pertanyaan pemrograman (seperti yang Anda lihat dari tautan terakhir):

opsi TCP SO_LINGER (nol ) - bila diperlukan

http://alas.matf.bg.ac.rs /manuals/lspe/snode=105.html



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo - Abaikan properti agar tidak dipertahankan

  2. Adakah cara untuk menyimpan tipe Tanggal sebagai waktu lokal di MongoDB?

  3. Cara Memasuki Produksi Dengan MongoDB - Sepuluh Tip Teratas

  4. Node.js mongodb driver async/menunggu kueri

  5. Bagaimana $maxDistance diukur dalam MongoDB?