Node.js:EBADF,错误的文件描述符

时间:2011-07-14 04:39:18

标签: node.js file-descriptor

如果我重新加载我的应用程序(带有重新加载按钮的浏览器)很多次,例如50 reload/10 seconds,它会给我这个错误:

events.js:45
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: EBADF, Bad file descriptor

在我看来,这似乎是一个带宽错误或类似的东西,最初我在使用HTML 5 Audio API时遇到错误,如果我按顺序加载音频文件10-15次,那么我已经得到了错误,但现在我发现我没有音频API也只是通过多次重新加载网站而得到错误,Safari也比Chrome更快地给我错误(WTF?)

我正在使用带有express + jade的Node.js 0.4.8,并且我还使用db-mysql模块连接到MySQL数据库。

我在网上找不到任何关于这个主题的文章有什么帮助,所以pleeease让我知道什么可能导致这个错误,因为它真的令人困惑:(

2 个答案:

答案 0 :(得分:5)

通过“重新加载您的应用程序”,您是指从浏览器刷新应用程序的主页,还是实际停止并重新启动node.js服务器进程?我假设前者,在这种情况下,如果你不能可靠地重现它,调试将非常棘手,特别是因为你没有一个好的堆栈跟踪来精确定位源。但是如果你使用express.js app.error hook(docs here),你会想要从“错误的文件描述符”错误中记录错误路径,这应该会让你知道这是否是一个被删除的临时文件或者什么。就实际原因而言,我们只能提供猜测,因为“坏文件描述符”是一个非常通用的低级错误,基本上意味着您正在调用不再处于正确状态的文件描述符上的操作来处理该操作(比如读取已关闭的文件,打开已删除的文件等。)

答案 1 :(得分:0)

@CIRK,请看一下:https://github.com/joyent/node/issues/1189

这不是节点问题,而是系统调优问题。

编辑:或者它可能与connect 1.4.3中的此错误有关: https://github.com/senchalabs/connect/issues/297

如果是这种情况,请尝试升级