2014-02-14 124 views
1

我在Ubuntu機器上運行這個錯誤,同時在請求模塊中執行GET操作並寫入MongoHQ存儲。Node.JS請求模塊 - 錯誤:連接EMFILE

我的錯誤是這樣的:

{ [Error: connect EMFILE] stack: 'Error: connect EMFILE\n at exports._errnoException (util.js:682:11)\n at connect (net.js:813:19)\n at net.js:897:9\n at Object.asyncCallback [as callback] (dns.js:78:16)\n at Object.onlookup [as oncomplete] (dns.js:94:10)', code: 'EMFILE', errno: 'EMFILE', syscall: 'connect' }

我已經看到了這個解決方案:

How do I change the number of open files limit in Linux?

我接着修改我的ulimit值,以便在規定的解決方案我的ulimit的輸出-a是:

4096

https://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user

我添加這些行:

  • 軟NOFILE 4096
  • 硬NOFILE 4096

我也從這個鏈接改變了我的limits.conf文件我仍然有同樣的問題。

但是,我確實有另一個ubuntu機箱,它在沒有此問題的Amazon EC2實例上運行(也)有較少的內存和存儲空間。我沒有對這個盒子做任何改動,唯一的區別是它運行的是Precise 12.04.2 LTS,而我的問題機器運行的是Precise 12.04.3 LTS。

任何幫助將不勝感激。

回答

0

我相信你是一個正確的軌道。我也有一個EMFILE錯誤,什麼最終固定它加上幾行我在/etc/security/limits.conf

*    soft nofile   100000 
*    hard nofile   1000000 
root    soft nofile   100000 
root    hard nofile   1000000 

然後我重新啓動,我不再有問題。 '*'表示所有非root用戶,所以這基本上是一個捕獲所有,無論用戶運行該程序。從我所知道的情況來看,在用戶重新登錄之後,ulimit不會被更改,因此您可能必須殺死進程並註銷,然後重新登錄....這可能是爲什麼重新啓動對我有用!