• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

数据库连接池监控

互联网 diligentman 1周前 (11-20) 12次浏览

连接池数量到底该配置成多少?

加了数据库连接池监控之后,就可以验证连接池数量是否配置的太大,因为之前都是乱配的,配了好几百,后面发现实际的活跃连接数量只有几个,所以配置数量一般只要几十个就可以了,因为

  • 1.并发请求没有那么高,可能就是个位数,高的时候是十位数,所以几十个就足够了。
  • 2.如果不考虑并发数量,也只需要配置几十个,就是cpu的数量*2,20来个就可以了。

所以最终的结果是,如果没有并发,配置cpu数量*2就可以了,20个就足够了。如果有一点并发(几十个),就30到50个就够了。如果并发达到50个,就还可以再往上加到100,但是最好不要超过100,超过100就应该加机器了,因为并发太多,机器也处理不过来,会导致处理速度变慢,所以就要加机器,好比每个人要做的事情变少了,速度就变快了。

数据库连接池的连接跟线程池有关系吗?

数据库连接池的连接跟线程池有关系吗?没关系。

切换连接,是切换线程吗?不是。

一个是切换线程上下文耗资源,因为要用户态和内核态切换,一个是创建数据库连接耗资源,因为要三次握手。

所以,这两个东西没有任何关系,唯一的共同点就是复用对象,一个是线程对象,一个是数据库连接对象。

为什么要复用对象?因为这两种对象,一个是创建代价太高,一个是切换代价太高(线程数量少,切换次数就少)。

数据库连接池满了怎么办?

数据库连接池满了怎么办?阻塞。默认就是阻塞,直到连接池有新的连接可以用。举个例子,比如配置的是30,现在满了,第31个请求来了,这个时候就阻塞,直到30个连接里有一个连接已经执行完成了,现在空闲出来了,这个时候这个空闲的连接就去执行刚才的第31个请求。

数据库连接池获取连接的耗时?

一般正常情况就是几ms,但是如果是新创建的连接,就要耗时几百ms,大概是200ms左右。如果是启动的时候,即连接池初始化的时候,获取连接需要1s,即差不多1000ms。这些都是真实的监控数据,而且是生产环境的,测试环境也一样也差不多。


喜欢 (0)