关于connection pool的讨论
ajoo 2003-11-05 12:57:39 连接池是个很cool的东西,很多系统,open source的也好,商用的也好,自己开发的也好,好像都有这个东西。
前几天,我们买的一个系统发生了宕机的情况。研究后发现,是因为这个系统用的数据库重新启动过了。而这个系统使用的是connection pool,一旦数据库系统重启,连接池内缓冲的连接都失效了。但是,问题是,这个连接池没有考虑到这个问题,于是整个系统都无法正常工作了。
前段时间,我们在一个项目中使用一个open source的o/r mapping软件ojb。它自带一个连接池。但是,它也有类似的问题,一旦数据库重新启动,或者数据库cluster fail over了,这个application就无法工作了。
我仔细研究了源代码,发现,要想扩展代码来对付这个问题几乎不可能。这个软件设计的时候没有考虑这个问题,而且,它的结构设计的不够灵活,无法根据customize。最后,只好费尽了九牛二虎之力,disable了这个connection pool。
这些失败的教训,让我对象连接池这种复杂的功能非常谨慎。不知道大家平时在使用连接池或者实现连接池的时候,是如何对付这种问题的?