NutzCN Logo
问答 数据库链接GetConnectionTimeoutException
发布于 2683天前 作者 qq_9cc84e4e 5870 次浏览 复制 上一个帖子 下一个帖子
标签:
org.nutz.dao.DaoException: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 15000, active 35, maxActive 35, creating 0, runningSqlCount 2

请问这种情况,是连接数耗尽了么?如果增大 maxActive到80,同样也会报这个错, 而且随着连接数和活跃连接数的增多,mysql的cpu也跟着升高,能高达90%+,mysql响应也会变得更慢,求助,怎么排查这种情况?

12 回复

请求的并发数很高?

并发数不高,但具体的并发数我不知道怎么统计

本地能重现吗??

取出了数据库链接, 用完之后没有调用close?

这是生产环境打出来的日志,没有试过本地是否可以重现, 项目的MVC框架用的是Nutz, 所有的数据库操作用的都是Nutz dao, close连接都是nutz dao自己做的吧

那也许是并发数太大了, 调到300吧, 应用和mysql都改一下

另外, druid有检测泄漏的配置, 配上试试呗

wendal,今天把连接数调到300,没发现出现这种情况了, 应该是并发太大了,但这样也会给数据库带来很大压力, 考虑用redis做缓存,网上搜了一些redis key的设计方法,有一个关于key的问题,想请教一下,
网上的key设计方法为:【表名:主键名:主键值:列名】, 这样的话,表的数据,是以列为单位存储的, 如果redis的最大内存使用完时,再往redis里面加数据,或者往redis存储数据时给timeOut过期了,导致某些列的数据被redis清除, 这样的话,可能会导致从redis中读某条数据时,有些列会丢失,这种情况怎么办?

试试daocache?

好的, 我了解一下

多谢,兽总的回复

添加回复
请先登陆
回到顶部