Почему mysql обрывает соединение?

Время от времени крашится приложение с такой ошибкой:
Error: Connection lost: The server closed the connection.
    at Protocol.end (/srv/arcoin/node_modules/mysql/lib/protocol/Protocol.js:109:13)
    at Socket.<anonymous> (/srv/arcoin/node_modules/mysql/lib/Connection.js:115:28)
    at emitNone (events.js:91:20)
    at Socket.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)

Как я понял, mysql закрывает соединение с сервером (или оно просто умирает). Как быть в такой ситуации? Если есть в настройках время жизни соединения, где можно его изменить?

Сейчас я использую вот такой модуль для подключения:
var mysql = require('mysql');

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'test',
  password : 'test',
  database : 'test'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }
});

module.exports = connection;


Говорят, чтобы избежать этой проблемы, надо просто создать пул коннектов:
var connection = mysql.createPool({
  connectionLimit : 30,
  host     : 'localhost',
  user     : 'test',
  password : 'test',
  database : 'test'
});

Но поможет и это в моем случае? Если поможет, как долго будет жить соединение с mysql?
  • Вопрос задан
  • 1388 просмотров
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Да, использование пула соединений поможет вам избежать подобной проблемы.

Рекомендуется также изменить размер количества одновременных соединений (max-connections) в настройках MySQL.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы