问题描述

有一个项目,当用户并发上去,接口就崩了,于是看了一下日志:

{ TimeoutError: ResourceRequest timed out at ResourceRequest._fireTimeout (/home/jcook/riqi_provider_directory/node_modules/sequelize/node_modules/generic-pool/lib/ResourceRequest.js:59:17) at Timeout.bound [as _onTimeout] (/home/jcook/riqi_provider_directory/node_modules/sequelize/node_modules/generic-pool/lib/ResourceRequest.js:8:15) at ontimeout (timers.js:469:11) at tryOnTimeout (timers.js:304:5) at Timer.listOnTimeout (timers.js:264:5) name: 'TimeoutError' }

问题分析

在官方的github上找到了相关issue这个 error 发生的原因通常是 某个 sql 执行很久没有 commit 导致。

https://github.com/sequelize/sequelize/issues/8133

问题解决

按照别人提供的解决方案,增加pool的配置

  'pool': {
      min: 0,
      max: 50,
      idle: 10000,
      acquire: 10000,
      evict: 10000,
      handleDisconnects: true
    },

问题暂时得以解决了,但是后来我继续提升了压测,还是会继续出错,所以还是在观察观察。