Соединение сервера узла с MySQL теряется - PullRequest
0 голосов
/ 03 июля 2018

Соединение с AWS RDS часто теряется без каких-либо сообщений об ошибках, таких как PROTOCOL_CONNECTION_LOST и т. Д. При использовании соединений пула. Когда сервер API получает запрос, вместо ошибки mysql возвращает пустой массив в качестве результата.

Я вижу, что соединение сброшено на приборной панели RDS, но событие ошибки не выдано . Я пробовал решения, такие как изменение mysql_connections_options, как connectTimeout, wait_timeout и т. Д., Плюс я также пытался пинговать MySQL-сервер через короткие регулярные промежутки времени (который возвращает правильный результат), но все равно соединение теряется и запрос возвращается пустой массив как результат без ошибок.

Вот мой код подключения:

connection = mysql.createPool(mysqlConnectionOptions);
function pingSqlServerForPersistentConnection() {
    console.log("PINGING : ");
    connection.getConnection(function (err) {
        if (err) {
            console.log('MYSQL ERROR CONNECTION : ' + err);

            pingSqlServerForPersistentConnection();
        }
        else {
            if (config.get("APP_NAME") == "prod") {
                setInterval(selectStar, 150000);
            }
            console.log('Connection established');
        }
    });
    connection.on('error', function (err) {
        console.log("MYSQL DISCONNECTED : ", JSON.stringify(err));
        pingSqlServerForPersistentConnection();
        if (err.code === 'PROTOCOL_CONNECTION_LOST') {
            console.log("MYSQL : \n PROTOCOL_CONNECTION_LOST");
            pingSqlServerForPersistentConnection();
        }
        if (err.code === 'ETIMEDOUT') {
            console.log("MYSQL : ETIMEDOUT");
            pingSqlServerForPersistentConnection();
        }
    });
}
...