当我尝试从子进程中记录到文件时,我在使用each() method of the async lib时遇到了一些非常奇怪(和不一致)的错误,这些错误似乎是文件句柄错误。
我传递给此方法的数组经常有数百个项,我很好奇Node在尝试从所有这些并发进程中记录到文件时,是否遇到了耗尽可用文件句柄的问题。当我注释掉我的日志调用时,这个问题就消失了,所以它肯定与此有关,但我很难找到原因。
所有的日志记录都试图放入一个文件中...我完全不清楚这是如何工作的,因为每次写入(可能)块,这让我想知道如果所有这些并发进程都坐在那里等待文件变得可用来写入,那么它们如何能够独立运行。
假设这就是我问题的根源,那么从一次运行N个进程的Asnyc.each()这样的进程中记录日志的正确方式是什么呢?
发布于 2013-08-01 05:18:28
我认为你应该对你将要做的并发/未完成的write调用的数量有一些可调的限制。不,它们都不会阻塞,但我认为async.eachLimit或async.queue将为您提供将限制设置得较低的灵活性,并确保一切正常运行,然后逐渐增加限制,以找出您最终遇到的资源约束。
https://stackoverflow.com/questions/17980517
复制相似问题