Моя весна + hibernate + c3p0 xml выглядит примерно так;
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driver.className}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="initialPoolSize" value="5"/>
<property name="acquireIncrement" value="10"/>
<property name="acquireRetryAttempts" value="0"/>
</bean>
<bean id="defaultSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>...</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.autoReconnect">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.c3p0.minPoolSize">30</prop>
<prop key="hibernate.c3p0.maxPoolSize">100</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
</props>
</property>
</bean>
Мне интересно, должен ли минимальный, максимальный размер пула записываться в источник данных / сессионный завод?
Я тестирую на загрузку 1000 одновременных пользователей.
С помощью приведенного выше кода мой максимальный размер пула никогда не превышал 15 (по умолчанию это c3p0). Если я перемещу максимальный пул в источнике данных, пул увеличился, но ответы имели на 20-30% более медленные ответы
Есть предложения?