【问题标题】:Node.js throws write EIO exception at random timeNode.js 随机抛出写 EIO 异常
【发布时间】:2014-03-16 09:31:55
【问题描述】:

我正在使用 node.js + socket.io + Winston (logger) 编写游戏服务器,但我的服务器每天都因为这个异常而死机:

Error: write EIO
at errnoException (net.js:901:11)
at Object.afterWrite (net.js:718:19)

我怀疑这可能是我使用 Winston 的方式。我有 server.jsroom.js 类,我需要 Winston 使用以下语句:var winston = require('winston');server.js 我注册文件日志记录:

winston.add(winston.transports.File, { filename: 'server.log' });
winston.handleExceptions(new winston.transports.File({ filename: 'errors.log' }))

room.js 中,我只需调用winston.info() 方法。

可能是因为有很多 room 实例或其他原因吗?

【问题讨论】:

  • 如果在 Windows 上检查这个stackoverflow.com/questions/17035399/…,如果在 linux 上这是由于读/写错误,比如设备断开连接。
  • 服务器是ubuntu linux。我能做些什么来防止这种行为?即使注册了“uncaughtException”事件 - 我的服务器在它发生时仍然死机
  • 还没有想到这个。如果我这样做,我会在这里发帖。
  • 我也遇到了同样的错误,而且我也在使用 socket.io。错误:在 Object.afterWrite (net.js:720:19) 处的 errnoException (net.js:904:11) 处写入 EIO
  • 摆脱它并编写自己的 TCP 套接字。如果您不使用它与 html 页面通信,这是最好的选择。这就是我所做的,再也没有问题了..socket.io 也在泄漏内存,winston 也是如此。它们不适合大型项目和许多连接

标签: javascript node.js socket.io winston


【解决方案1】:

防止应用崩溃

:你可以通过使用这个模块Node.js domain exception handler来防止你的应用程序崩溃 您可以在域块中编写代码,它永远不会再次崩溃。但是要小心,您必须先解决您的问题

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2015-11-23
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多