【发布时间】:2020-11-10 12:53:14
【问题描述】:
我在 Lambda 上运行带有 sequelize 的 nodejs,我的配置:
pool: {
max: 5,
min: 0,
acquire: 20000,
idle: 10000
}
环境:
Node: 10.x
Sequelize: 6.3.5
ERROR Unhandled Promise Rejection
{
"errorType": "Runtime.UnhandledPromiseRejection",
"errorMessage": "SequelizeConnectionAcquireTimeoutError: Operation timeout",
"reason": {
"errorType": "SequelizeConnectionAcquireTimeoutError",
"errorMessage": "Operation timeout",
"name": "SequelizeConnectionAcquireTimeoutError",
"parent": {
"errorType": "Error",
"errorMessage": "Operation timeout",
"stack": [
"Error: Operation timeout",
" at Timeout._timeout.setTimeout (/var/task/node_modules/sequelize-pool/lib/Deferred.js:17:25)",
" at ontimeout (timers.js:436:11)",
" at tryOnTimeout (timers.js:300:5)",
" at listOnTimeout (timers.js:263:5)",
" at Timer.processTimers (timers.js:223:10)"
]
},
"original": {
"errorType": "Error",
"errorMessage": "Operation timeout",
"stack": [
"Error: Operation timeout",
" at Timeout._timeout.setTimeout (/var/task/node_modules/sequelize-pool/lib/Deferred.js:17:25)",
" at ontimeout (timers.js:436:11)",
" at tryOnTimeout (timers.js:300:5)",
" at listOnTimeout (timers.js:263:5)",
" at Timer.processTimers (timers.js:223:10)"
]
},
"stack": [
"SequelizeConnectionAcquireTimeoutError: Operation timeout",
" at ConnectionManager.getConnection (/var/task/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:288:48)"
]
},
"promise": {},
"stack": [
"Runtime.UnhandledPromiseRejection: SequelizeConnectionAcquireTimeoutError: Operation timeout",
" at process.on (/var/runtime/index.js:37:15)",
" at process.emit (events.js:198:13)",
" at process.EventEmitter.emit (domain.js:448:20)",
" at emitPromiseRejectionWarnings (internal/process/promises.js:140:18)",
" at process._tickCallback (internal/process/next_tick.js:69:34)"
]
}
我还有另一个具有相同设置的 Lambda 函数(但使用节点 12 而不是节点 10),它每小时处理更多的请求,但每个请求的执行次数更少,并且运行良好。
问题是这个 Lambda 函数只是偶尔超时,而且只有在 10-50 毫秒后才超时 我不知道这是怎么发生的。代码中没有使用事务。任何帮助都感激不尽。谢谢
【问题讨论】:
-
池设置应该是
acquireTimeoutMillis,但您看到的错误来自尝试从池中获取连接。默认超时时间为 30 秒。
标签: node.js aws-lambda sequelize.js