Аномальное поведение nodej и MySQL, потеря связи

191
06 октября 2018, 14:40

Встретился с аномальным поведением NodeJS и MySQL. Вопрос очень специфический, буду рад любым догадкам.

В общих словах структура работы следующая. Скрипт сервера на NodeJS подключается к MemcacheQ, читает очередь и если там что то появляется, выполняет запрос на выборку в MySQL + несколько запросов на добавление информации в таблицу лога.

Примерно два раза в месяц случается следующее. В какой то момент перестает выполняться код обработки информации запроса.

my.query(select_query, function(error, result, fields) {
  // код обработки информации, полученной из запроса
});

Делал вывод console.log(my) перед запросом и сравнивал, штатную и проблемную ситуацию. Разница была в том, что появлялось значение "Queue, Queue, ..., Queue" в одном из параметров. Сейчас не скажу уже точно, не сохранился лог. Буду ставить еще раз, т.к. вопрос оставлялся в связи с расставленными приоритетами.

Создание подключения: var my = require(script_path+'/node_modules/mysql2').createConnection({user: dbuser, password: dbpass, database: dbname, host: dbhost}); Сначала был mysql просто, потом использовал mysql2. Изменение не принесло успехов.

Дальше включил обрабатку ошибок: my.on('error', function(err) {

    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
        console.log('Lost connection MySQL Database');
        console.log('db error', err);
        sighandle();
    } else {                                      // connnection idle timeout (the wait_timeout
        console.log('Database disconnect. Another error');
        console.log('db error', err);
        sighandle();
    }

});

Думал поймаю что-нибудь, но ничего не прилетело. Такое чувство что есть некий параметр, дойдя до которого забивается очередь и запросы не выполняются.

Причем на этом же сервере работает apache+PHP+MySQL который читает и пишет в эту БД. В момент, когда появляется нештатная ситуация, веб интерфейс (apache+PHP+MySQL) работает корректно.

По нагрузке, примерно в 1 секунду NodeJS скрипт читает из MemcacheQ порядка 20 раз. Таких скриптов запущено порядка 15-20. БД размером порядка 300Гб.

В свое время как разбирался с проблемой, делал на сервере обновление пакетов через emerge -NuavD world (сервер гентушный). Не помогло.

Пробовал обновлять nodejs с версии 4 сначала на 6ую, потом пропатчил файлы и смог обновится на 7.9. Пока на восьмую не переходил.

Еще есть момент, когда делалась архивация старой информации и выполнялось куча запросов на удаление и добавление информации (думаю 200-250 млн запросов) в этом месяце сбой произошел гараздо раньше, чем через 15 дней..

Все случилось именно после переезда на новый сервер. На старом все было норм. Старый: Intel® Xeon® E5-1650 v2, 128Gb DDR4, 2Tb SATA Новый: Intel® Xeon® E5-1650 v3, 256Gb DDR4, 480SSD DataCenter Ed Но в момент переезда все версии MySQL и nodejs были одинаковые. Существенное отличие в жестких.

Понимаю, что сложно однозначно дать ответ. Но может будут хоть какие-то предположения. Я сделал автоматический перезапуск, когда это случается. Но из-за особенностей системы простой все равно составляет пару минут. За эти пару минут прилетает 100-200 запросов. И доставляются неудобства пользователям.

Хочется вернуться к этому вопросу, может кто нибудь чего нибудь подскажет. Вывод console.log(my) поставил сейчас, но след. падение будет через примерно 10-12 дней..

Заранее спасибо.

READ ALSO
Не пишет в базу (Python)

Не пишет в базу (Python)

Подскажите, почему не получается записать(на python) в базу(mysql) В чем ошибка ?

170
Как в MySQL правильно искать фразу целиком

Как в MySQL правильно искать фразу целиком

Есть таблица с текстовым полем, содержащим ссылкиВ разных строках таблицы эти ссылки произвольной длины

187
Как получить позицию строки в выдаче MYSQL?

Как получить позицию строки в выдаче MYSQL?

Выполняем запрос: SELECT id, name, rank FROM table ORDER BY rank DESC, id DESC Мне нужно получить позицию в этой выдаче строки с фиксированным id (например id=50)Как это...

180
Mysql workbench внезапно закрылось ubuntu 16.04

Mysql workbench внезапно закрылось ubuntu 16.04

помогите решить проблемуНе знаю в какую сторону капать

158