MySQL запрос с использованием nodejs / mysql - как установить время ожидания - PullRequest
0 голосов
/ 02 июля 2019

У меня есть сервер Node.JS, который использует MySQL для подключения к моей базе данных. Теперь я использую пул соединений для повторного использования открытых соединений, когда они доступны. В настоящее время мой конфиг в Node.JS выглядит следующим образом:

var pool = mysql.createPool({
    connectionLimit: 10,
    host: DB_HOST,
    user: DB_USER,
    password: DB_PASS,
    database: DB_BASE,
    ssl      : {
          ca   : fs.readFileSync('******'),
          key  : fs.readFileSync('******'),
          cert : fs.readFileSync('******'),
    },
    charset : 'utf8mb4',
    dateStrings: true
})

Однако мой сервер, работающий на компьютере Linux с 2 ГБ ОЗУ и 2 виртуальными ЦП, теперь настроен на тайм-аут после 300 с (my.cnf):

wait_timeout = 300
interactive_timeout = 300

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я думаю, что из-за этого пула соединений я только освобождаю соединение, а не закрываю или завершаю его. Это дает мне много ошибок в моем файле error.log из MySQL, например:

2019-06-30T11:08:59.749390Z 1485 [Note] Aborted connection 1485 to db: 'DBNAME' user: 'server' host: 'XXX.XXX.X.XX' (Got timeout reading communication packets)

Я предполагаю, что это происходит, потому что соединение все еще открыто (освобождено, но открыто) и затем не используется в течение следующих 5 минут (300 с), поэтому мой сервер закрывает его автоматически. Это правильное предположение, или я совершенно не прав здесь, и я должен искать решение в другом месте?

Однако, если я прав, могу ли я как-то это предотвратить или это ошибка / предупреждение не имеет большого значения? Я думал об увеличении времени ожидания до 8 часов, так как это значение по умолчанию, или, возможно, в Node.JS есть способ, которым я не знаю, чтобы закрыть соединение, если оно не используется, например, в течение 4 минут, но я хотел бы услышать некоторые мнения об этом, прежде чем что-либо менять.

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...