你如何设置连接池?

WW.*_*WW. 10 rdbms connection-pooling

设置游泳池的最佳方法是: -

  1. 你什么时候建立联系?
  2. 你什么时候关闭连接,你会关闭它们吗?
  3. 你测试连接是否仍然很好.何时以及如何?
  4. 你怎么知道最大连接数的好数字?
  5. 您有什么样的监控来确保池的用户表现良好?你能阻止一段不好的代码取出所有东西吗?
  6. 您是否已编写自己的池或使用第三方库?

我认为这是一个不可知的问题,但欢迎对特定数据库/语言的"特征"发表评论.例如,在某些数据库上连接可能比其他数据库更慢或更昂贵.

为了澄清,我不打算从头开始编写池,这个问题更多的是关于如何配置实现池的现有库.

dac*_*cot 6

我在Java中为数据库编写了一个连接池,它只是一个设计模式,而不是一个公共库.现在我使用Tomcat内置的那个.

我使用一个线程来监视池的几个方面以及控制其行为的几个参数......

  1. minimumInPool ="3"......前三个是在发布时创建的.游泳池永远不会低于三.
  2. maximumIdleTimeBeforeRemoval ="60"...如果连接空闲一小时,则将其删除并创建一个新连接.空闲时间可能意味着池中只有至少三个.
  3. maximumInUseTimeBeforeRemoval ="30"...如果一个给定的连接已被检出超过30分钟,那么可能是错误的.回想一下,并终止连接.
  4. maximumTimeBeforeRemoval ="60"...如果超过60分钟,请将其删除.
  5. maximumUsageBeforeRemoval ="1000"...如果已经超过1000次检出,则将其删除.
  6. monitorInterval ="15"...每15分钟检查一次上述参数.

几年来,这对我很有帮助.我见过的最高的游泳池是疯狂偷看的151个连接.通常情况下,在大量使用期间,游泳池大约有十几个,并且在凌晨时间闲置至最少三个.

我使用了Oracle的JDBC瘦驱动程序并连接到Oracle数据库.