Então, acontece que eu estava perdendo uma linha chave que habilitava c3p0 (os parâmetros c3p0 que eu estava ajustando não estavam tendo efeito porque o Hibernate estava usando seu pool de conexão embutido - que ele avisa apropriadamente não é adequado para produção). No hibernate 2.x, definindo o
hibernate.c3p0.max_size
pool de conexão c3p0 habilitado para propriedade. No entanto, em 3.x você deve especificar a seguinte propriedade -- <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
Além disso, aqui estão meus parâmetros de configuração finais --
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">5</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.idle_test_period">100</property> <!-- seconds -->
É lamentável que tanto o Hibernate quanto o c3p0 tenham uma documentação abismal a esse respeito.