怎么捕捉sequelize连接数太多的问题?
发布于 8 年前 作者 jiangliqin 9366 次浏览 来自 问答

我看线上日志出现多次Unhandled rejection SequelizeConnectionError: ER_CON_COUNTERROR: Too many connections,不知道是什么没处理好,目前连接池设置为 pool: { max: 30, min: 0, idle: 10000 } Too many connections是指打开的数据库连接太多,而关闭的不及时?也就是产出>消费的速度,这样理解对吗? 或者急救措施,怎么能够捕捉SequelizeConnectionError的异常?我看sequelize API中有new ConnectionError()这类异常 是在这里加吗:var sequelize = new Sequelize(dbname,username,passwd,conf),sequelize.on(‘error’,function(){}) 还请各位大侠帮忙指点迷津哈!谢谢

13 回复

sequelize有主动release的操作吗?

@imhered 没有,貌似它自动release

并发量怎样?

@yjhjstz 每秒十几个请求吧,不算高,系统中我尽量没多次操作数据库

没有哪位朋友遇到类似的情况吗?请帮忙指点一二哈,吐槽下也可以

连接数太多是不是修改下数据库设置,或者再堆些硬件?

@liuxufei 在本地和阿里云mysql都会出现,应该不是硬件问题,我用sequelize操作mysql,如果把连接池max: 30设置小点,这种问题出现少些,但出现这种问题的根源是什么呀?

可能原因: 因为 my.ini 中设定的并发连接数太少或者系统繁忙导致连接数被占满。 解决方式: 打开 MYSQL 安装目录打开 my.ini 找到 max_connections 默认是 100, 一般设置到500~1000比较合适,重启 MySQL 。

@liuxufei 我看阿里云RDSmysql数据库监控报告,最大连接数上限是600多,历史记录中实际最大连接数100都不到

sequelize出问题了,你监听redis错误干嘛?Redis.createClient().(‘error’,function(){})

@imhered 啊?才发现我贴错了啊, var sequelize = new Sequelize(dbname,username,passwd,conf); 这里我看api没有监听错误,是不是应该sequelize.on(‘error’,function(){})?我以前没加

求问楼主发现解决方法了么

@lanyanai 还是mongo主从节点的连接池大小设置问题,导致有些连接无法释放

回到顶部