连接池
数据源是各种数据库,甚至你可以认为excel都是一个数据源。连接池是为了复用连接数据源的链接的管理池。
连接池的监控可以反应一部分的业务高峰,形成告警。持续的监控指标也能作为应用崩溃的复盘数据。
监控原理
公司平台使用普罗米修斯采集Java暴露的JMX数据,作为产品研发团队,只需要在程序启动后,将每个数据源包装一个Listener,多个数据源打包成map,交给MBeanExporter
1 | MBeanExporter exporter = new MBeanExporter(); |
指标设置
样例代码中,指标的计算是这样的:
最大上限: maxSize
当前创建: poolSize(池中总连接)
空闲数: available(池中可用连接)
已使用: poolSize - available
利用率: (poolSize - available) / poolSize
一开始我是觉得不太合理,监控的时候,不太好监控。仔细思考一下,也可以组合一下用当前暴露的指标做监控:
- 当前创建>90 (硬指标,不方便)
- 利用率在多个采集周期都>90% (持续高涨,当前创建数应该会增加)
其实如果不是非常学院派,常人理解的指标应该是这样计算:
最大上限: maxSize
当前创建: poolSize
空闲数: maxSize - poolSize
已使用: poolSize - available
利用率: poolSize / maxSize