CNode

怎么捕捉sequelize连接数太多的问题?

问答
Jjiangliqin发布于10 年前最后回复9 年前13 回复10458 浏览0 收藏

我看线上日志出现多次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)

I
im-here#1·10 年前

sequelize有主动release的操作吗?

J
jiangliqin#2·10 年前
引用 im-heresequelize有主动release的操作吗?

@imhered 没有,貌似它自动release

Y
yjhjstz#3·10 年前

并发量怎样?

J
jiangliqin#4·10 年前
引用 yjhjstz并发量怎样?

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

J
jiangliqin#5·10 年前

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

L
liuxufei#6·10 年前

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

J
jiangliqin#7·10 年前
引用 liuxufei连接数太多是不是修改下数据库设置,或者再堆些硬件?

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

L
liuxufei#8·10 年前

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

J
jiangliqin#9·10 年前
引用 liuxufei可能原因: 因为 my.ini 中设定的并发连接数太少或者系统繁忙导致连接数被占满。 解决方式: 打开 MYSQL 安装目录打开 my.ini 找到 max connections 默认是 1...

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

I
im-here#10·10 年前

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

J
jiangliqin#11·10 年前
引用 im-heresequelize出问题了,你监听redis错误干嘛?Redis.createClient().(‘error’,function(){})

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

J
jiangliqin#12·9 年前
引用 lanyanai求问楼主发现解决方法了么

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

L
lanyanai#13·9 年前

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

参与回复
登录后即可参与回复。登录