2013-07-31 33 views
0

我使用each() method of the async lib並遇到一些非常奇怪(且不一致)的錯誤,當我嘗試從子進程內登錄到文件時,似乎出現文件句柄錯誤。我應該擔心從異步方法中記錄文件句柄嗎?

我交給這個方法的數組經常有數百個項目,我很好奇Node節點是否因爲嘗試從所有這些同時進程中的文件登錄而無法使用可用的文件句柄。當我註釋掉我的日誌通話時,問題就消失了,所以它肯定與此有關,但我很難追查原因。

所有的日誌都試圖進入單個文件...我完全不清楚這是如何工作的,因爲每個寫(可能)阻塞,這讓我想知道所有這些同時進程能夠獨立運行如果他們都坐在等待文件可以寫入。

假設這是我的麻煩的來源,什麼是從一個進程登錄的正確方法,如Asnyc.each(),它一次運行N個進程?

+0

向我們顯示與問題相關的代碼。 –

+0

@RobertHarvey,有很多代碼......你很想看看我寫入文件的具體細節。 –

+0

在日誌過程中可能涉及多少代碼?顯示異步調用的一般框架以及對日誌記錄方法的調用。告訴我們你正在使用什麼日誌框架,或者告訴我們日誌記錄方法中的代碼。 –

回答

0

我認爲你應該有一些可調整的限制,以便你打算做多少個併發/優秀的write調用。不,他們都不會阻止,但我認爲async.eachLimitasync.queue會給你靈活性來設置低限,並確保事情的行爲,然後逐漸增加它來找出你最終遇到的資源限制。

+0

否否... async.each()進程一遍又一遍地調用相同的日誌記錄方法(經常是在同一時刻),但文件全是一個日誌文件。 –

相關問題