如何提高NodeJS程序的稳定性
May/16th 2011

   当我们写了个NodeJS程序的时候,一般用node yourjsfile.js命令启动该程序。但是如果程序中有东西出错,这个进程就会退出。我们写程序不可能保证万无一失,肯定有些没有处理的错误,这就让很多人觉得NodeJS不稳定,容易产生很多故障。 下面我就讲讲几种方法增加你的NodeJS程序的稳定性。

   1.使用 try{...} catch(error){...} 来执行容易出错的代码段。比如解析一个外来的json字符串等。
   2.使用 process.on('uncaughtException', function(err){...}); 来处理未被捕捉的错误。
   3.试用奶妈进程来启动你的程序,检测子进程的退出,然后自动重启该进程。比如 mother.js :


start();
function start()
{
    console.log('Mother process is running.');
    var ls = require('child_process').spawn('node', ['yourjsfile.js']);
    ls.stdout.on('data', function (data)
    {
        console.log(data.toString());
    });
    ls.stderr.on('data', function (data)
    {
        console.log(data.toString());
    });
    ls.on('exit', function (code)
    {
        console.log('child process exited with code ' + code);
        delete(ls);
        setTimeout(start,5000);
    });
}

    4.使用 nohup 让nodejs进程在后台运行。 比如运行"nohup node yourjsfile.js > /dev/null &"


13241 read 16 comment(s)
#1
挪墨   2011年05月17号 09:46       回复
很有价值的解决方案,特别是mother.js的思路
关于第四点,如果js程序出现异常,会有一个什么反馈给程序员?
#2
longbill   2011年05月17号 09:48       回复
@挪墨 什么都没有。………也可以有。把/dev/null 换成文件名,输出就会被保存到那个文件。
#3
王道中强流   2011年05月17号 10:44       回复
强大
#4
网站建设   2011年06月02号 15:56       回复
虎王和狮王在酒吧喝酒,喝到后来,竟抱头痛哭起来。这时狐狸侍者走过来问道:“两位大哥为何如此伤心?” 
狮王拍拍狐狸,指着虎王说:“他家有个母老虎,俺家有个河东狮。兄弟,这日子怎么过呀?” 
听到这儿,狐狸立刻饱含眼泪,委屈地说:“两位大哥,俺家那个狐狸精也不省心呀!”
#5
phper   2011年06月17号 10:55       回复
请教博主大陆上推特、facebook的方法.
#6
宁波藏獒园   2011年06月21号 11:12       回复
博主你的博文不错啊,我会继续支持你的
#7
我的久优   2011年06月24号 17:59       回复
你以前的域名怎么不用了,longbill的这个,觉得换成com的比较好吧,CN的我自己都觉得无力了
#8
怎样利用网络赚钱   2011年06月25号 11:37       回复
CN域名确实不太好呀
#9
高清电视   2011年07月10号 10:18       回复
这段代码不错,学习了
#10
Longbill   2011年08月06号 00:55       回复
@phper 用的我自己写的NodeJS翻墙软件。
#11
美国十次啦   2011年08月06号 23:22       回复
写的不错嘛
#12
四房播播   2011年08月06号 23:22       回复
学习了应该用有
#13
电视棒   2011年10月04号 00:38       回复
这段代码写得非常好,学习了
#14
内蒙古人事考试   2011年11月03号 17:36       回复
代码我头晕
#15
yoom   2011年12月01号 13:50       回复
非常感谢您的文章!!
#16
水饺   2012年01月11号 17:10       回复
nohup启动,该死的还是会死,还没提示...
添加新的评论
称呼:*
邮件:*
网站:
内容:

Copyright © Longbill 2008-2017 , Designed by EndTo , Powered by EndCMS