Node.Js Server保持崩溃,没有错误

时间:2014-10-07 10:38:07

标签: javascript node.js express crash socket.io

我目前正在处理一个项目,该项目基本上是一个用于与其他员工互动的实时留言板。

在基础知识已经开发之后,我已经完成了这一切,我对Node非常陌生,并且正在开发。

我们的服务器在随机时间意外退出而没有错误。它每天最多发生一次,有时服务器负载很小,有时服务器负载很重。

有一个未被捕获的例外的听众:

    process.on('uncaughtException', function(err) {
    // handle the error safely
    console.log("Uncaught exception: "+err);
    });

我们还会在控制台和日志文件中输出错误,但是在它退出之前都没有显示错误!

我们正在使用express和socket.io

任何帮助都将不胜感激。

这基本上就是我们在服务器中的代码。我正在记录我可以看到的所有不同进程,并且我根本没有收到任何错误消息,并且当执行不同的操作时,它似乎总是崩溃:

    process.on('uncaughtException', function(err) {
    // handle the error safely
    console.log("Uncaught exception: "+err);
    });

app.configure(function(){
        app.use(express.cookieParser());    // Allow parsing of cookies
        app.use(express.json());                            // Support JSON parsng
        app.use(express.urlencoded());                      // Support URL encoded params
        app.set('view engine', 'ejs');                      // Define view engine as EJS
        app.use(express.session({store: sessionStore, secret: sessSecret, key: sessKey}));
        app.use(app.router);                                // Use routes
        app.use("/public", express.static(__dirname + '/public'));     // Define public directory
    });



    var server = https.createServer(options, app).listen(app_port, function(){
        console.log("Express server listening on port " + app_port);
    });

    // Require our routes module
    var routesModule = require('./modules/routes.js')(app);
    var svc_io  = require("/usr/lib/node_modules/socket.io/index.js")(https);
    var dbmodule = require("./modules/db.js");


var moment = require('/usr/lib/node_modules/moment/moment.js');
    var fs = require('/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js');
    var util = require('util');

    console.log = function(d){
        var time = moment().format('DD-MMM-YYYY HH:mm:ss.SSS');

        var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags: 'a'});
        var log_stdout = process.stdout;

        log_file.write(time + ' : ' + util.format(d) + '\n');
        log_stdout.write(time + ' : ' + util.format(d) + '\n');
        log_file.end();
    };

    var io = svc_io.listen(server);
    var socketModule = require('./modules/socket.js')(app, io, sessionStore, cookieParser, sessKey, sessSecret);

2 个答案:

答案 0 :(得分:0)

我想你需要对此进行评论,你会得到错误点。

// process.on('uncaughtException', function (err) {
// handle the error safely
//console.log("Uncaught exception: "+err);
// });

答案 1 :(得分:0)

万一这可以帮助其他人从Google提出这个问题:我有一台崩溃的Node.js服务器,根本没有任何错误,并且花了一个小时才意识到我的原因是在我的代码中写入类似writeFileSync("./foo.json", "…")的文件,通常当然可以,但是这导致服务器“崩溃”,因为我使用PM2来“监视”服务器目录中的文件更改-即无论何时文件更改在服务器目录中,PM2重新启动服务器。我通过为watch_ignore文件夹添加.data配置并将foo.json放在其中来解决了这个问题。