2016-06-18 34 views
6

Bir mongodb koleksiyonunda düzenli olarak kümelenmeyi çalıştıran bir komut dosyası var. Veri kümesi büyüdükçe, toplanması gereken süre de artmıştır. Benim toplama komut son zamanlarda sürekli çalışmayı durdurdu ve hata günlükleri gösterir: Bu hata ayıklama denedim ve ben bulabilecek tek model bu zaman aşımı toplama 2 dakikadan uzun sürer yalnızca (bunu ortaya görünmektedir olmasıdır error: { [MongoError: server <x> timed out] name: 'MongoError', message: 'server <x> timed out' } 2m) etrafında zaman aşımına uğradı. Bunun için ek hata ayıklama ipuçları var mı? 2 dakikalık bir şey, bana sadece bir zaman aşımı için bir yere ihtiyaç duyduğum izlenimini veriyor ama nerede kırmızı bir ringa tuzağına düştüğümü anlayamıyorum. Bu agregasyon, komut bir dağ bazlı docker (v1.9.1) konteyner çalışan node.js (v5.9.1) uygulaması: Sistem yapılandırması MongoDB toplaması sırasında "Server x zaman aşımına uğradı"

. mongodb düğüm sürücüsünü (v2.1.19) kullanır. koşu mongod (v3.2.6)

cevap

5

(bu aynı zamanda bir replSet ile ayrı bir ortamda gerçekleşiyor olsa da) Tek mongodb sunucusu Ben günlükleri zaman toplama için aynı problem var. Sanırım senin için bir çözümüm var.

Ben seçenek socketTimeoutMS o sorumlu olduğunu gördük. mongo_client.js varsayılan socketTimeoutMS değerini kontrol edin. Benim için 2min idi. Mongodb modülü sürümü 2.1.18.

Dolayısıyla, sadece url içine bu seçeneği ekleyin:

mongodb://localhost:27017/test?maxPoolSize=2&socketTimeoutMS=60000 

O timeout 10 dakika ayarlayacaktır. Bu benim için hile yapar.