Я использую Knex.js для обработки моих соединений с базой данных.Я пытаюсь предотвратить пул соединений от разрушения соединений, которые были незаняты.
Моя конфигурация выглядит следующим образом
{
"client": "pg",
"connection": {
"host" : "localhost",
"port" : "15432",
"user" : "postgres",
"password" : "",
"database" : "postgres",
"charset" : "utf8"
},
"pool": {
"min" : 1,
"max": 7,
"idleTimeoutMillis": Number.MAX_SAFE_INTEGER
},
"migrations": {
"directory": "app/database/migrations"
}
}
Однако я все еще продолжаю получать
{"errno":"ETIMEDOUT","code":"ETIMEDOUT","syscall":"read"}
После периода бездействия.
Насколько мне известно, по прошествии достаточного количества времени соединение следует выбрасывать из пула.Так что, если соединения не используются какое-то время (это мой случай), в пуле не будет соединений, и первый вызов, который я попытаюсь, потерпит неудачу с данной ошибкой.Последующие звонки проходят гладко (до нового тайм-аута)
Мой вопрос - как это предотвратить?
EDIT
после того, как мое приложение какое-то время простаивает, первая операция, которая должна перейти на уровень базы данных, завершается неудачно с данной ошибкой.Любой повторный звонок будет успешным.Вот почему я пришел к выводу, что knex не обнаруживает, что соединение отбрасывается как бездействующее, и не восстанавливает соединение вовремя для завершения первого запроса.Я также считаю, что проблема на стороне knex, а не на стороне базы данных.