Nodejs服务器崩溃重启
2019-06-10 本文已影响0人
有内涵的Google
Node时间服务器崩溃重启
Nodejs服务器由于是单进程的,所以很容易导致服务器垮掉
解决的办法:
利用Nodejs 的子进程Child_process官方文档-------nodejs中文网 ,当然如果你对自己的英文很有信心的话可以去官网进行阅读 ------ 弄的就是官网
原理:
是利用Linux的lsof -i:prot
来检查端口的占用情况,代码如下:
- 测试服务代码
server.js
:
注意这里的port(端口不能被占用)可以使用lsof -i:prot
进行查看
const http = require('http');
const app = http.createServer( (req,res) => {
res.send('hello world');
});
app.listen(8080);
- 监听程序
check.js
const exec = require('child_process').exec;
check();
function check(){
let last = exec('lsof -i:8080');
last.on('exit', function(code){
if(code != '0'){
console.log('主服务器崩溃,正在进行重启');
} else {
console.log('主服务器正常运行');
}
});
serTimeout(check,10000);
}
function run (){
let last = exec ('node server.js');
last.on('exit',function (code){
if(code == '0') {
console.log('主服务器已经重启成功');
} else {
console.log('主服务器重启失败');
}
})
}
这里进行递归循环,没1s执行一次lsof -i:8080
看端口是否还是被占用的情况,如果没有被占用,说明主程序server.js
已经由一些外界的原因已经崩溃了,所以执行node server.js
再一次进行重启服务器 当然这里可以发挥许多的想象当服务器崩溃的时候可以搭建一个邮件服务器,当代码执行到node server.js
的时候,可以把错误信息,以及是否重启成功的信息发给你的邮箱,你可以第一时间进行修改代码.
同步更新到我的个人博客曌明博客