压测时服务直接崩,报连接池耗尽。

原因:每个请求都新建连接,没有复用。测试时量小看不出来。

改:

  1. 用连接池,配置最大连接数和空闲超时
  2. 池大小要匹配数据库承受能力,不是越大越好
  3. 加监控看池的使用率

另一个坑:连接用完不还。异常分支里没有 finally 释放,泄漏之后池就空了。

这类问题在压测时才暴露,所以上线前一定要压测,而且要看资源使用曲线,不只是看错误率。

主楼