thinkjs icon indicating copy to clipboard operation
thinkjs copied to clipboard

压力测试,并发时会导致数据库连接中断,Error: read ECONNRESET

Open junieHF opened this issue 6 years ago • 9 comments

压力测试,50并发时会导致数据库连接中断

ENV

OS Platform:centOS7.5

Node.js Version:8.9

ThinkJS Version:3.0

code

exports.model = {
  type: 'mysql',
  common: {
    logConnect: isDev,
    logSql: isDev,
    logger: msg => think.logger.info(msg)
  },
  mysql: {
    handle: mysql,
    database: 'xxx',
    prefix: '',
    encoding: 'utf8',
    charset:'UTF8MB4_GENERAL_CI',
    host: 'xxx',
    port: '',
    user: 'root',
    password: 'root',
    connectionLimit:10,
    dateStrings: true
  }
};

error message

Error: read ECONNRESET
      at _errnoException (util.js:1024:11)
      at TCP.onread (net.js:615:25)

more description

进行并发压力测试时,但并发达到40-50时,项目会中断与数据库的连接,数据库使用的时mysql,有什么方法能捕捉这种情况并重新连接上数据库

junieHF avatar Nov 20 '18 01:11 junieHF

@welefen 可有什么方法能解决

junieHF avatar Nov 23 '18 06:11 junieHF

@junieHF 没遇到这种情况。你直接用代码连接 mysql(用 mysql 库),然后压测试试,看有没有这个情况。

welefen avatar Nov 23 '18 06:11 welefen

直接用jmeter对数据库压测都正常。。。

junieHF avatar Nov 23 '18 07:11 junieHF

@junieHF 用阿里云的docker部署的吗?之前我用了也是出现这个问题

vjzning avatar Nov 26 '18 01:11 vjzning

@vjzning 不是docker,就是阿里云的centOs系统,pm2管理的

junieHF avatar Nov 26 '18 07:11 junieHF

@welefen 针对这种情况可有什么方法能解决这个问题?原因暂时没有时间来查了

junieHF avatar Nov 26 '18 07:11 junieHF

@junieHF 用阿里云的docker部署的吗?之前我用了也是出现这个问题

那你现在可解决了这个问题?请教下

junieHF avatar Nov 26 '18 07:11 junieHF

@junieHF 我是去掉docker,用pm2管理就好了。

vjzning avatar Nov 26 '18 07:11 vjzning

@junieHF 建个干净的项目,然后写个接口只连数据库压测看看呢?

welefen avatar Nov 27 '18 10:11 welefen