达永编程网

程序员技术分享与交流平台

orace数据库连接池配置引发的访问缓慢、不稳定问题

项目出现问题,系统如果隔2min左右没有使用,再次使用时会很慢,等到第一次慢过之后,响应就恢复正常。

通过arthas进行追踪后,发现慢在了获取数据库连接上。

查看数据库配置,配置如下:

jdbc.pool.minIdle=0
jdbc.pool.maxIdle=10
jdbc.pool.maxActive=10
jdbc.pool.maxWait=30000
jdbc.pool.initialSize=1

minIdle:最小空闲线程数

maxIdle:最大空闲线程数

initialSize:初始化线程数

初始化线程数越大,第一次连接时间耗时越长,但一个线程池初始化1个线程还是太小了。

minIdle设置为0,网上说设置为0表示没有限制,但实际情况时线程池在线程空闲一段时间后,应该会把所有线程回收。

因此才会有隔一段时间,所有线程被回收,第一次发送请求后,需要初始化线程池。

为了证明一下假设,对配置文件进行修改

jdbc.pool.minIdle=20
jdbc.pool.maxIdle=20
jdbc.pool.maxActive=60
jdbc.pool.maxWait=30000
jdbc.pool.initialSize=20

重启系统后,没有再出现类似的情况。

珍惜创建线程,但也不要太小气,目前的服务器,配置20-100连接数,一般都没问题。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言