Я запускаю веб-приложение на сервере Node.js, и мне нужно, чтобы он был онлайн все время, поэтому я использую навсегда. Но вот что я получаю после определенного периода времени:Node.js - сервер закрыл соединение?
Error: Connection lost: The server closed the connection.
at Protocol.end (/home/me/private/app/node_modules/mysql/lib/protocol/Protocol.js:73:13)
at Socket.onend (stream.js:79:10)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:910:16
at process._tickCallback (node.js:415:13)
error: Forever detected script exited with code: 8
error: Forever restarting script for 3 time
У меня есть еще два сервера, которые были запущенными в течение 10 дней подряд. У меня есть «keepalive» loop на всех серверах, делая запрос «select 1» mysql каждые 5 минут или около того, но похоже, что это не имеет никакого значения.
Любые идеи?
EDIT 1
Мои другие серверы давали подобную ошибку, я думаю, что это было «соединение тайм-аут», поэтому я ставлю эту функцию:
function keepalive() {
db.query('select 1', [], function(err, result) {
if(err) return console.log(err);
console.log('Successful keepalive.');
});
}
И фиксированной мои другие два сервера , Но на моем основном сервере я все еще получаю ошибку выше.
Вот как я начинаю мой главный сервер:
var https = require('https');
https.createServer(options, onRequest).listen(8000, 'mydomain.com');
Я не уверен, какой код вы заинтересованы в том, чтобы. В основном сервер является REST API, и он должен постоянно оставаться в стороне. Он получает около 2-5, может быть, 10 запросов в минуту.
Похоже, ваш сценарий приложения имеет некоторые ошибки. Попробуйте запустить 'node app.js' вместо того, чтобы навсегда увидеть ошибку. – Sriharsha
В журнале нет ошибок, я попытался запустить его с помощью node-dev. Это единственное сообщение об ошибке, которое я вижу. –
Сообщите нам больше о своем приложении, чтобы мы могли понять, что происходит. Вы оставляете сокет открытым против mysql? Зачем? Это удаленная база данных? – TheBronx