数据库连接池监控的另类方案

0a40fbb1dbd20a9cca94bd8e4f16976e.jpeg

如果这篇对你有帮助,还请麻烦转发。谢谢。

数据库的连接池的监控的重要性

假如,我们在公有云上存在一个数据库数据库实例X。公有云配置中已经说明X所支持的最大连接数是1000。

如果数据库X的实际连接数达到了1000,那么,新的连接就无法再与该数据库连接。

造成的直接问题是:某些应用可能无法写入或者读取数据。注意是“可能”。所以,这个“直接问题”非常的随机。

还没完。根据你的业务,你可能还会产生一系列连锁反应,比如:

  1. 1. 缓存与数据库数据不一致;

  2. 2. 应用线程数暴增;

  3. 3. 服务CPU使用率暴增。

连锁反应可能是爆炸式的,总的一句话:你根本不知道会发生什么。

所以,数据库的连接池的监控非常的重要。

常规方案

常规的监控方案是,当数据库实例的实际连接数到达800,并持续5分钟时,进行warning级别的通知。到达950,并持续1分钟时,进行critical级别的通知。

这个方案是可行的,但是不够好,因为当出现告警时:

  1. 1. 你无法根据这个告警通知,分析出是哪个应用发起的连接数过多导致的;

  2. 2. 事故可能已经发生了,我们希望更早的阶段知道,并且避免这个事故。

有没有更好的解决方案呢?

另类方案的思路

常规的监控方案还是必须要有的。因为那是针对的数据库实例本身的监控。

我们需要另一个方案进行补充,即标题所写:另类方案。

之所以另类,是因为在行业里,我还没有发现有人这么做的(所以也可能是我孤陋寡闻)。

思路如下:

存在一个数据库,它所支持的最大连接数是 S。

存在一个需要连接数据库的应用A,它配置了最小连接数为5。同时,A应用在环境中有10个实例。所以,A应用总共需要10 * 5=50个连接数。

我们只需要在配置编译打包pipeline过程中,进行判断 S > 50。这个判断我们称之为连接数配置合法性校验。

如果是false,那么整个pipeline failed。

另类方案的实现

思路是这样。但是如何实现呢?这取决于你的配置方案的实现。

如果配置存在CMDB中,应用也从CMDB中获取,那么,连接数配置合法性校验就实现在CMDB中。

如果配置被当成代码进行管理,那么,在配置代码被编译打包的阶段实现。

如果配置存放在基于自建的,界面(GUI)的配置管理系统中,那么,你就需要修改这个配置管理系统。

换一句话说:实现方案取决于配置的来源。

本文完。

往期好文推荐:

猜你喜欢

转载自blog.csdn.net/apl359/article/details/128681410