Всем привет!
Столкнулся с такой проблемой: в непредсказуемый момент процесс 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