2016-07-23 18 views
0

Ich entwickle eine Loopback-Anwendung, um Daten mit Oracledb npm-Modul von ORACLE zu erhalten und in JSON-Format konvertieren, um in MONGODB gespeichert werden. MONGODB wird unter Verwendung "loopback-connector-mongodb" zugegriffen.EMFILE-Fehler auf Massen-Daten einfügen

Die zu speichernden Daten würden für 100 Sammlungen ab 100 Tabellen von ORACLE zur Verfügung stehen. Ich dränge Daten mit http-Anfrage Zeile für Zeile für die gesamte Sammlung Liste von Knoten-Server von meiner lokalen Anwendung auf eine andere Server-Anwendung auf Remote-Rechner mit http-Anfrage über Remote-Methode aufrufen.

Wenn der Datenschreibvorgang beendet wird, beendet die Remote-Computeranwendung den Fehler "EMFILE error".

Ich googelte und einige Referenz zeigte, dass es wegen der maximalen Anzahl der geöffneten Dateien/Sockets ist. Daher habe ich versucht, die DataSource für jede Anfrage zu trennen. Trotzdem bekomme ich den gleichen Fehler.

Bitte helfen Sie mir dabei !!

Danke.

Antwort

0

Wenn Sie eine HTTP-Anforderung für jede Datenzeile erstellen und die Reihenfolge dieser Anforderungen nicht einschränken oder anderweitig steuern, können Sie aufgrund des asynchronen Modells des Knotens einfach zu viele Anforderungen gleichzeitig erstellen.

Zum Beispiel würden diese Aufrufe in einer einfachen for-Schleife tatsächlich dazu führen, dass alle von ihnen parallel gemacht werden.

Wenn dies der Fall ist, sollten Sie in Betracht ziehen, etwas wie das Async-Modul zu verwenden, das einige Dienstprogramme zum Drosseln der Parallelität enthält.

+0

Dank @Ryan für das Vorschlagen. aber ich habe die Kontrolle über die Daten gesendet und empfangen zu und von Server mit Call-Back-Funktionen wie ** ** async io Modell ** ** (Zeile für Zeile Schleife durch ** rekursive Funktion ** und ** nicht für die Schleife **). Obwohl ich das getan habe, habe ich den Fehler bekommen. –

0

Vergessen Sie nicht, Oracle Database 12.1.0.2 hat JSON-Unterstützung. Vielleicht müssen Sie die Daten nicht erst verschieben?

Siehe JSON in Oracle Database. Um es mit dem Handbuch: 'Oracle Database unterstützt JavaScript Object Notation (JSON) Daten nativ mit relationalen Datenbank-Funktionen, einschließlich Transaktionen, Indexierung, deklarativen Abfrage- und Ansichten'