目测应该是某一socket连接异常,抛出了“Socket hangs up”,而又木有程序诸如 socket.on('error')
或 try { } cacth (err) {}
之类的措施来捕获并处理此错误,于是导致Node.js进程直接退出。
-
1、“Socket hangs up”只是一个连接期间发生的错误,这种问题是随时可能会遇到的,监听“error”事件应该能捕获到,这样就不会抛出异常了
-
2、你的程序应该能处理各种未知的错误,比如:
-
使用
try {} catch (err) {}
来捕获某个范围内的错误 -
使用内置的Domain模块来捕获某个范围内
try ... catch
无法捕获到的错误(某些异步操作,如setTimeout()
回调里面抛出的异常在外面是无法捕获到的)(参考http://nodejs.org/api/domain.html ) -
捕获全局全局异常uncaughtException并处理(参考http://nodejs.org/api/process.html#process_event_uncaughtexception )
-
使用forever之类的工具来监控进程,以便进程意外退出时能自动重启 (参考https://npmjs.org/package/forever )
-
@panawang 我之前也遇到过类似的报错,话说 node 的报错真的很模糊。后来我 debug 到 socket 那一层,发现 socket 这个库有问题,然后再深究,是 stream 库的问题…然后我放弃了。
@panawang 你那个问题是怎么印发的? 我上次遇到这个问题,是我在纽约的 vps,向七牛 put 数据时候出现的。我至今也不懂是超时导致的,还是 DNS 解析之类的导致的。 而且也忘记自己怎么绕过去的了。