Тайм-аут бездействия рукопожатия: nodejs 6.10.0 mysql pool.queryAsync

Необработанное отклонение Ошибка: время ожидания бездействия рукопожатия истекло. Я запускаю приложение и получаю сообщение об ошибке при подключении к БД на случай получения данных. Я удалил папку node_modules. Изменена версия узла через nvm с 4.4.7 на 6.10.0. Снова установил node_modules. Пытался увеличить тайм-аут вариантов подключения. Пробовал использовать mysql2 без промисфайла. Ничего не помогло. Я читал о конфликтах DNS-адресов с маршрутизатором (однако соединение работает с узлом 4.4.7). Я также понимаю, что такая же проблема была в предыдущих версиях, но я не нашел четкого и понятного ответа, только предложения о маршрутизации, процессоре, неправильном подключении конфигурации.

OS: Centos 7 
node //Now using node v6.10.0 (npm v3.10.10) via nvm
mysql module: 2.13.0
mysql db : //some DNS name (not local), port : 3306

КОД(lib/mysql/index.js)

var Promise = require("bluebird");
// The most popular mysql module
var mysql   = require('mysql');

// Note that the library's classes are not properties of the main export
// so we require and promisifyAll them manually
Promise.promisifyAll(require("mysql/lib/Connection").prototype);
Promise.promisifyAll(require("mysql/lib/Pool").prototype);

var config      = require(__base + '/config');
var connections = {};

Object.keys(config.mysql).forEach(function (name) {
    var options       = config.mysql[name];
    new Connection(name, options || null);
});

/**
 * @param name
 * @param options
 *       host    : options.host,
 *       port    : options.port,
 *       user    : options.user,
 *      password: options.password,
 *      database: options.database
 *
 * @constructor
 */
function Connection(name, options) {
    this.name                     = name;
    var connectionObj             = options;

    connectionObj.connectionLimit = 10;   
    this.pool                     = mysql.createPool(connectionObj);

    this.runQuery = function (query) {
        return this.pool.queryAsync(query);       
    };
    connections[name] = this;
}
function setConnection(name , options ){
    connections[name] = new Connection(name,options)
}
function getConnection( name, options ){
    if( !connections[name]){
        setConnection(name,options);
    }
    return connections[name];
}

exports.connections = connections;
exports.getConnection = getConnection;


Unhandled rejection Error: Handshake inactivity timeout
at Handshake.<anonymous>
    (/home/User/code/application/node_modules/mysql/lib/protocol/Protocol.js:160:17)
    at emitNone (events.js:86:13)
    at Handshake.emit (events.js:185:7)
    at Handshake._onTimeout (/home/User/code/application/node_modules/mysql/lib/protocol/sequences/Sequence.js:127:8)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)
    --------------------
    at Protocol._enqueue (/home/User/code/application/node_modules/mysql/lib/protocol/Protocol.js:141:48)
    at Protocol.handshake (/home/User/code/application/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at PoolConnection.connect (/home/User/code/application/node_modules/mysql/lib/Connection.js:130:18)
    at Pool.getConnection (/home/User/code/application/node_modules/mysql/lib/Pool.js:48:16)
    at Pool.query (/home/User/code/application/node_modules/mysql/lib/Pool.js:202:8)
    at Pool.tryCatcher (/home/User/code/application/node_modules/bluebird/js/release/util.js:16:23)
    at Pool.ret [as queryAsync] (eval at makeNodePromisifiedEval (/home/User/code/application/node_modules/bluebird/js/release/promisify.js:205:1), <anonymous>:14:23)
    at Connection.__dirname.Connection.options.runQuery (/home/User/code/application/lib/mysql/index.js:50:26)
    at TableName.runQuery (/home/User/code/application/models/mysql/abstract.js:51:34)
    at TableName.proto.getAll (/home/User/code/application/models/mysql/abstract.js:60:17)
    at new TableName (/home/User/code/application/models/mysql/table_name.js:11:33)
    at Object.<anonymous> (/home/User/code/application/models/mysql/table_name.js:58:18)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)

Я попытался увеличить время ожидания, как здесь: Ошибка: время ожидания бездействия рукопожатия в Модуль Node.js MYSQL.

Я читал о настройках DNS здесь: Ошибка : тайм-аут бездействия рукопожатия в Node.js v6.9.1 и MYSQL . (С узлом 4.4.7 проблем нет).


person slby    schedule 13.03.2017    source источник


Ответы (1)


Приложение запустилось в IDE WebStorm v.11 в режиме отладки и не удалось. Я обновил IDE до более новой версии 2016.3. Проблема ушла.

person slby    schedule 14.03.2017