c3p0 连接池 - 尽管 minPoolSize 为 10,但仅启动了一个 jTDS 进程
Posted
技术标签:
【中文标题】c3p0 连接池 - 尽管 minPoolSize 为 10,但仅启动了一个 jTDS 进程【英文标题】:c3p0 Connection Pool - only one jTDS process started although minPoolSize is 10 【发布时间】:2016-09-15 12:34:12 【问题描述】:我正在使用 c3p0 连接池连接到 SQL Server 2008 数据库。如下所示,minPoolSize 设置为 10,但 SQL Server 中只启动了一个 jTDS 进程。
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" >
<property name="acquireIncrement" value="20" />
<property name="idleConnectionTestPeriod" value="60"/>
<property name="maxConnectionAge" value="7200" />
<property name="preferredTestQuery" value="select 1" />
<property name="maxIdleTime" value="1200" />
<property name="maxPoolSize" value="250" />
<property name="maxStatements" value="50" />
<property name="minPoolSize" value="10" />
<property name="driverClass" value="$database.driver" />
<property name="jdbcUrl" value="$database.url" />
<property name="password" value="$database.password" />
<property name="user" value="$database.user" />
</bean>
“最大并发连接数(0 = 无限制):”在 SQL Server 中设置为 0。
任何想法可能是什么问题?
【问题讨论】:
【参考方案1】:问题是我在端口 1434 上连接到我的数据库。该端口是专用管理员连接,SQL Server 只允许该端口上的一个连接。
SQL Server 日志中的错误消息:
无法连接,因为“1”专用的最大数量 管理员连接已存在。在新的连接可以之前 进行,现有的专用管理员连接必须 通过注销或结束进程来删除。 [客户: 127.0.0.1]
错误:17810,严重性:20,状态:2。
我通过启用 TCP/IP 并将端口更改为 1433 解决了这个问题。 启用 TCP/IP: 打开 SQL Server Configuration Manager->SQL Server Network Configuration->Protocols for MSSQLSERVER 双击 TCP/IP 并选择 Enabled Yes。
【讨论】:
以上是关于c3p0 连接池 - 尽管 minPoolSize 为 10,但仅启动了一个 jTDS 进程的主要内容,如果未能解决你的问题,请参考以下文章
c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?
c3p0配置 initialPoolSize 和minPoolSize 可以设为0吗?设0有坏处吗?