0
我目前正在照顧一個基本上是用於與其他員工進行交互的實時留言板的項目。Node.Js服務器不斷崩潰,沒有錯誤
基礎知識已經開發完畢,我已經採取了這一點,我是相當新的節點,並在一般的發展。
我們的服務器只是在隨機時間意外退出,沒有錯誤。它每天發生一次,有時服務器負載很少,有時服務器負載很重。
沒有爲捕獲的異常監聽器:
process.on('uncaughtException', function(err) {
// handle the error safely
console.log("Uncaught exception: "+err);
});
,我們還打印錯誤控制檯和一個日誌文件,但也不斷顯示錯誤就退出之前!
我們使用快遞和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);
我不確定,但我不認爲我們真的可以真正爲您提供這樣一些代碼的解決方案。這個異常可能是由許多事情引起的,但我不確定我們實際上是否有任何線索說「這是一個服務器問題」或「這是一個與您的代碼有關的問題」,因爲我們不知道您的代碼是如何實際結構化(包括客戶端和服務器)以及您實際擁有的服務器和基礎設施......您能否給我們提供更多信息? – briosheje 2014-10-07 10:43:55
嗨。感謝您的迴應。我們使用的代碼很多,其中一些代碼對商業敏感,所以我知道我很難獲得幫助。 基本上整個應用程序分爲服務器,登錄模塊,路由模塊,套接字模塊和Oracle數據庫模塊。我不知道要分享哪些代碼部分。 每次發生這種情況似乎是在一些不同的事件之後,我們無法複製...我知道這可能沒有太大的幫助! – k2099 2014-10-07 10:57:00
然後,我建議你實際記錄正在發生的一切,並嘗試瞭解事件本身之間是否有任何關係。如果事件之間沒有關係,那麼它可能只是一個與nodejs的核心有關的問題(儘管我懷疑它),或者它很可能是與您的服務器或基礎架構本身有關的問題。理解這一點的最好方法(至少對我來說)是記錄服務器端正在發生的每一個動作,因爲它是實際產生問題的一方。 – briosheje 2014-10-07 11:02:45