批量数据插入时出现EMFILE错误

时间:2016-07-23 09:34:40

标签: node.js mongodb loopbackjs strongloop

我正在开发一个环回应用程序来使用ORACLE的oracledb npm模块获取数据,并将其转换为JSON格式以存储在MONGODB中。 可以使用“loopback-connector-mongodb”访问MONGODB。

对于来自ORACLE的100个表,要存储的数据将包含100个集合。 我正在使用http请求逐行将数据从节点服务器从本地应用程序逐行推送到远程机器上的另一个服务器应用程序,使用http-request通过远程方法调用。

当数据写入操作时,远程机器应用程序停止抛出显示"EMFILE error"的错误。

我用谷歌搜索并且一些参考文献显示这是因为打开的文件/套接字的最大数量。因此,我尝试断开每个请求的DataSource。我仍然得到同样的错误。

请帮助我!!

感谢。

2 个答案:

答案 0 :(得分:0)

如果您正在为每行数据发出http请求,并且没有限制或以其他方式控制这些请求的顺序,那么由于节点的异步模型,您可能只是一次发出太多请求。 / p>

例如,在简单的for循环中进行这些调用实际上会导致所有这些调用并行生成。

如果是这种情况,您可能需要考虑使用async模块之类的东西,其中包括一些用于限制并行性的实用程序。

答案 1 :(得分:0)

不要忘记Oracle Database 12.1.0.2具有JSON支持。也许您不需要首先移动数据?

JSON in Oracle Database。引用手册:

  

'Oracle数据库支持JavaScript Object Notation(JSON)数据   本地使用关系数据库功能,包括事务,   索引,声明性查询和视图。'