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