有没有人有任何信息比较不同 ConnectionPool 实现的性能特征?
背景:我有一个应用程序在后台线程中运行数据库更新到同一个盒子上的 mysql 实例。使用数据源 com.mchange.v2.c3p0.ComboPooledDataSource 会给我们偶尔的 SocketExceptions: com.mysql.jdbc.CommunicationsException: Communications link failure 由于底层异常:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Broken pipe
STACKTRACE:
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
增加 mysql 连接超时会增加这些错误的频率。
这些错误在切换到不同的连接池(com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource)时消失了;然而,性能可能更差,内存配置文件也明显如此(我们得到的 GC 比 c3p0 池少得多,而且大得多)。