MySQL JDBC连接池的最大大小

时间:2012-07-05 22:01:21

标签: java mysql connection-pooling

我正在使用Java构建套接字服务器。每个新的套接字连接都会启动一个新线程,需要连接到MySQL服务器。

目前我为每个线程都有一个新连接,但是想要更改为连接池,以便我可以更有效地回收连接。

但是,此池的默认大小似乎是5个连接。我目前正在处理超过100个客户端,5个连接是不够的。我发现的所有文档都提到了不同的服务器(Tomcat,JBoss,GlassFish等)以及如何将值放在XML配置文件中。

由于我没有使用任何这些,我找不到如何设置max pool size值。我还想避免这个项目的第三方库(例如Apache Commons)。

例外情况是Java的MySQL连接器(在这里找到:http://dev.mysql.com/usingmysql/java/

我发现唯一可能的参考是env.put(JNDIPooledSource.MAX_POOL_SIZE, 500);,但我不相信这是正确的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

MySQL connector / J没有Pooled DataSource实现。您需要使用第三方软件,或使用容器附带的软件。我相信tomcat开箱即可使用commons-dbcp。

c3p0是另一个选项,它有一个可直接构建的数据源,内置了池。

答案 1 :(得分:0)

对于选择连接池库,我的建议是

光>德鲁伊> UCP> c3p0> DBCP

它基于我的测试结果,在我的本地测试环境中(docker / pool中的4GB mac / mysql minSize = 1,maxSize = 8),hikari可以提供1024个线程x 1024次来获取连接,每个线程平均的时间完成线程数为1或2百万秒,而c3p0只能服务256个线程x 1024次,每个线程的平均时间已经为2100万秒。 (512个线程失败)。