Всем привет!
Столкнулся с такой проблемой: в непредсказуемый момент процесс Node.js при запросе на поиск в базе через
mongoose
падает с ошибкой
MongoError: pool destroyed
at Pool.write (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:853:8)
at _command (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/wireprotocol/command.js:127:10)
at command (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/wireprotocol/command.js:27:5)
at Object.query (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/wireprotocol/query.js:57:3)
at Server.query (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:639:16)
at FindOperation.execute (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/operations/find.js:24:12)
at topology.selectServer (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/operations/execute_operation.js:164:17)
at Server.selectServer (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:827:3)
at Server.selectServer (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/topologies/topology_base.js:363:32)
at executeWithServerSelection (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/operations/execute_operation.js:150:12)
at executeOperation (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/operations/execute_operation.js:81:16)
at Cursor._initializeCursor (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/cursor.js:545:7)
at Cursor._initializeCursor (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/cursor.js:191:11)
at nextFunction (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/cursor.js:748:10)
at Cursor._next (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/cursor.js:202:5)
at fetchDocs (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/operations/to_array.js:27:14) name: 'MongoError', [Symbol(mongoErrorContextSymbol)]: {} }
Сама
MongoDB
жива и
healthcheck
сообщает о статусе
healthy
Баг повторяется в разных приложениях, в разные моменты, в разных местах. После перезапуска процесса
Node.js
переподключение происходит нормально. Через некоторое время процесс опять падает.
Настройки
mongoose
все дефолтные, кроме
poolSize
, который выставлен на
250
.
Сетап сервиса:
Node.js
и
MongoDB
в
Docker
при помощи
docker-compose
.
Образ
Node.js
-сервиса собирается из
node:10
Образ
MongoDB
--
mongo:latest
(на данный момент:
4.2.3
)
Используется
mongoose
версии
5.7.5