[英]how to prevent unexpected data from causing fatal crash of nodejs server?
尽管我在nginx,apache,jboss等服务器方面拥有丰富的经验,但我对Node.js服务器还是很陌生(这引起了我对socket.io功能的兴趣)。 我觉得奇怪的是,像object.MyProperty这样的意外数据(未定义)等-我认为这很琐碎,导致整个服务器崩溃(该客户端请求没有崩溃,但是整个服务器崩溃了!),您需要重启服务器。
我不确定是否是因为我处于开发模式,还是因为它处于实时模式。 崩溃时,所有运行时数据都会丢失。 我的问题是,我该怎么做才能确保服务器不会崩溃,但是它可以像其他服务器一样将问题写入日志文件。
非常感谢您的协助。
process.on('uncaughtException', function (err) {
console.error((new Date).toUTCString() + ' uncaughtException:', err.message)
console.error(err.stack)
})
由于nodejs是单个进程服务器,因此您可以将此代码放置在js脚本中的任何位置,以充当所有未处理/无法预料的错误的全部。
我认为您正在寻找https://github.com/foreverjs/forever 。 永久运行脚本并在发生崩溃时重新启动脚本,而无需用户干预。
您可以使用npm永久安装。 安装后,您可以使用forever start <path/to/script>
来运行nodejs脚本。 forever list
将列出所有当前正在运行的脚本, forever stop <script-id>
将停止给定脚本。
请记住,使用此方法并不意味着您不必进行适当的异常处理。 根据需要实现try...catch
语句,并处理代码中的所有异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.