2016-06-18 14 views
6

Ich habe ein Skript, das regelmäßig Aggregation auf einer Mongodb-Sammlung ausführt. Mit zunehmendem Dataset ist auch die Zeit für die Aggregation gewachsen. Mein Aggregationsskript hat kürzlich nicht mehr ordnungsgemäß funktioniert, und die Fehlerprotokolle zeigen: Ich habe versucht, dies zu debuggen, und das einzige Muster, das ich finden kann, ist, dass diese Zeitüberschreitung nur auftritt, wenn die Aggregation länger als 2 Minuten dauert Timeout um ca. 2m). Hat jemand dafür zusätzliche Debugging-Tipps? Die 2-Minuten-Sache gibt mir den Eindruck, dass ich nur irgendwo eine Auszeit konfigurieren muss, aber ich kann nicht herausfinden, wo oder ob ich gerade in eine Heringsfalle falle."Server x Zeitüberschreitung" während der MongoDB-Aggregation

über die Systemkonfiguration: Diese Aggregation Script ist eine node.js (v5.9.1) Anwendung in einem alpinen basierten Docker (v1.9.1) Behälter läuft. Es verwendet den Knotentreiber mongodb (v2.1.19). Single mongodb server (obwohl dies auch in einer separaten Umgebung mit einem replSet geschieht) läuft mongod (v3.2.6)

Antwort

5

Ich habe das gleiche Problem für Protokolle Zeit Aggregation. Ich denke, ich habe die Lösung für dich.

Ich fand, dass die Option socketTimeoutMS dafür verantwortlich ist. Überprüfen Sie Ihren mongo_client.js Standard socketTimeoutMS Wert. Für mich war es . Mongodb Modul Version 2.1.18.

So fügen Sie einfach diese Option in Ihrer URL:

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

Es timeout bis 10 Minuten eingestellt werden. Das macht den Trick für mich.