有同事推荐BoneCP,网上搜一下benchmark结果也很是惊人,最近用连接池想到换成BoneCP。但是,经过我自己的使用和测试,我又换回了c3p0,原因有二:
1.bonecp在高并发下的稳定性不如c3p0,其它完全一样的条件(web层Jersey,数据层postgresql),使用bonecp时的吞吐量多次测量结果的波动比c3p0明显要大,同时在性能上两者并没有本质区别,并没有出现bonecp明显胜出的情况,c3p0的连接池热身甚至更快一些。
2. bonecp的Datasource不支持自动重连(或许我没找到),这非常要命,我测试的时候手动重启了一下数据库,c3p0很正常地重连上了,bonecp就彻底没反应了。
据我所知,oschina曾经也尝试过切换到bonecp,后来据说因为一些bug换了回来。我自己的感觉与此类似,即使bonecp自称使用了更新的concurrent特性,因此有更好的性能,但是我自己得到的结果并不与之非常符合。