Здравствуйте.
Написан небольшой nodejs скрипт, запущен через init.d, который читает memcache, выбирает из БД информацию и возвращает результат.
После переезда на новый сервер, обновилась версия nodejs, стоит сейчас 6.9.1 (7ую не могу использовать, надо исправлять depricated). Версия библиотеки mysql 2.12.0, сегодня обновил но результат увижу уже через 15 дней (ниже подробней).
Через 15 дней теряется подключение к БД. Причем никак себя не проявляет в логах, и в попытках отловить проблему.
Вот даты когда перезапуск был: 29.01, 14.02, 01.03, 17.03.
Странно, т.к. через день скрипт перезапускается автоматическичерез cron + init.d.
Подключение:
var my = require(script_path+'/node_modules/mysql').createConnection({user: dbuser, password: dbpass, database: dbname, host: dbhost});
Что делал:
1) Добавил обработку
my.on('error', function(err) {
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
console.log('Lost connection MySQL Database');
console.log('db error', err);
sighandle();
} else {
console.log('Database disconnect. Another error');
console.log('db error', err);
sighandle();
}
});
2) Условный код места, где проблема:
console.log('обработка');
my.query(select_query, function(error, result, fields) {
if (typeof(result) == 'object' && typeof(result[0]) == 'object') {
console.log('Чтение из БД');
} else {
console.log('Ошибка чтения информации из БД. Ошибка: '+error);
};
};
В логах нет ошибки, есть только записи с обработкой.
Не доходит до "Чтение из БД", и не доходит до "Ошибка чтения из БД". Так же не выдает то, что повесилось на обработке my.on('error'). Почему перезапуская ошибка все равно имеет свою периодичность?
Спасибо. Буду признателен за информацию.