node.js socket.io脚本在1-2天后被SIGSEGV杀死

问题描述:

我正在运行我的node.js服务器,并且我的脚本在1-2天内死亡,并且在日志文件中出现此错误:node.js socket.io脚本在1-2天后被SIGSEGV杀死

error: Forever detected script was killed by signal: SIGSEGV 

现在我在我的node.js脚本中有很多功能。在每个函数的开头写的console.log我最终得到这个在日志中:

info: transport end (undefined) 
debug: set close timeout for client CbU1mvlYaIvDWHB4ChQa 
debug: cleared close timeout for client CbU1mvlYaIvDWHB4ChQa 
disconnection function 
debug: discarding transport 
debug: clearing poll timeout 
debug: client authorized 
info: handshake authorized 2O3m1B3dGWFOJ4W9ChQc 
error: Forever detected script was killed by signal: SIGSEGV 

日志使它看起来好像无论是连接或断开功能有问题,而是因为剧本seg运行2天后的故障以及超过10000次连接/断开连接,我认为这可能不是真正的问题。

这是我的连接和断开功能。我也通过node-dbi连接到我的pgsql数据库:

var DBWrapper = require('node-dbi').DBWrapper; 
var DBExpr = require('node-dbi').DBExpr; 
var dbConnectionConfig = { host: 'localhost', user: 'user', password: 'pass', database: 'dbname' }; 
dbWrapper = new DBWrapper("pg", dbConnectionConfig); 
dbWrapper.connect(); 

io.sockets.on('connection', function(socket) { 


    console.log("socket connection"); 

socket.on('set username', function(userName) { 
var milliseconds = (new Date).getTime(); 
var data = { socketid: socket.id, time: milliseconds }; 
dbWrapper.insert('all_sockets', data , function(err) { 
}); 

}); 

socket.on('disconnect', function() { 

    console.log("disconnection function"); 
    dbWrapper.remove('all_sockets', [['socketid=?', socket.id]] , function(err) {}); 
}); 

}); 

哪里可以发生段故障?

+0

你使用任何编译插件?如果你是'find node_modules/-name \ *。node''应该显示结果。您是否在主入口脚本的目录中获得了coredump(例如node.core)? – mscdex

+0

find命令给我这个: node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil.node node_modules/socket.io/node_modules/socket.io -client/node_modules/ws/build/Release/obj.target/validation.node node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/bufferutil.node node_modules/socket.io /node_modules/socket.io-client/node_modules/ws/build/Release/validation.node node_modules/pg/build/Release/obj.target/binding.node node_modules/pg/build/Release/binding.node i没有得到一个.core文件的脚本 – user3455531

+0

的目录中的任何帮助?我在2天后得到了另一个错误 – user3455531

我会推荐使用segfault处理程序来确定STDERR。这样你会有一些更有用的调试信息。

You can find one here

+0

我怎么能在远程服务器上得到这个? – user3455531

+0

您可以使用npm安装软件包。试试看:npm install segfault-handler – Mike

+0

无法安装它。得到错误 gyp ERR!配置错误 gyp ERR!堆栈错误:无法安装“pre”版本的节点,请使用--nodedir标志 gyp ERR! install(/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:66:16) – user3455531