错误:Node.JS中的Socket不可写

时间:2011-07-28 13:55:55

标签: node.js

我在Node.JS上运行了一个简单的跟踪应用程序,它基本上解析了它给出的URL并返回1x1像素的gif图像。每天几次我在日志中收到以下错误:

 Error: Socket is not writable
    at Socket._writeOut (net.js:391:11)
    at Socket.write (net.js:377:17)
    at ServerResponse._writeRaw (http.js:392:28)
    at ServerResponse._send (http.js:372:15)
    at ServerResponse.write (http.js:622:16)
    at ServerResponse.end (http.js:682:16)
    at /var/www/app.js:221:7
    at Server.<anonymous> (/var/www/app.js:234:3)
    at Server.emit (events.js:67:17)
    at HTTPParser.onIncoming (http.js:1124:12)

我完全不知道造成这种情况的原因。任何想法在哪里看? (它发生在不同的UA上,虽然直到现在我才看到它发生在请求来自Windows机器但是考虑到绝大多数机器是Windows,这并不意味着什么)。

2 个答案:

答案 0 :(得分:1)

您应该向https://github.com/joyent/node/issues?state=open

提交错误

它可能违反了模块或系统HTTP模块中的常规流写入协议:如果write()失败,请等待drain()事件。因此,您应该查找代码中的失败写入和编译到/ usr / bin / node二进制文件中的HTTP javascript模块,并仔细检查是否遵守了排除等待。排水事件很少见,因此很可能长时间没有注意到这个错误。

答案 1 :(得分:1)

此问题一直是地址,因为它实际上可能是由于您使用池的方式(即使在池关闭后使用池中的连接)。

修复方法是使用client.pauseDrain()允许重用池中的单个连接。

更多信息,此答案的来源为here