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) {});
});
});
哪里可以发生段故障?
我会推荐使用segfault处理程序来确定STDERR。这样你会有一些更有用的调试信息。
我怎么能在远程服务器上得到这个? – user3455531
您可以使用npm安装软件包。试试看:npm install segfault-handler – Mike
无法安装它。得到错误 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
你使用任何编译插件?如果你是'find node_modules/-name \ *。node''应该显示结果。您是否在主入口脚本的目录中获得了coredump(例如node.core)? – mscdex
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
的目录中的任何帮助?我在2天后得到了另一个错误 – user3455531