标签: c3p0

如何监控c3p0连接

我在JBoss战中使用Hibernate,使用c3p0进行连接池,都在我的类路径中的hibernate.cfg.xml配置文件中配置

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

我见过server.log生成的行包含有关连接池的有趣信息:

DEBUG [com.mchange.v2.resourcepool.BasicResourcePool] trace com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6 [managed:10,unused:9,excluded:0]

对于我的监控池(我正在使用nagios),我想提供一个JSP,告诉我们正在使用多少个连接以及有多少个是免费的,就像日志文件所说的那样.

如何询问c3p0有多少托管和未使用的连接?

java hibernate health-monitoring c3p0

12
推荐指数
1
解决办法
2万
查看次数

Tomcat JDBC连接池VS c3p0连接池

我最近遇到了这个连接池实现.

http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html

我觉得很有意思.

有没有人试过这个?我认为它看起来很棒,除了它不支持自动重试和语句缓存,如c3p0.

有没有人知道它与c3p0相比如何?

直到现在我使用了c3p0,但我发现它在多线程环境中的连接处理存在问题.与应用程序线程数相比,它打开了太多连接.

谢谢.

java connection tomcat connection-pooling c3p0

12
推荐指数
1
解决办法
1万
查看次数

如何在c3p0中返回连接

我正在使用c3p0 - ComboPooledDataSource.我正在初始化一次,如下所示.

private void init() {
cpds = new ComboPooledDataSource();
cpds.setDriverClass(driverName);
cpds.setJdbcUrl(url);
cpds.setUser(userName);
cpds.setPassword(pwd);
}
Run Code Online (Sandbox Code Playgroud)

我从池中获得如下连接

public synchronized Connection getLocalConnection(String ipAddr)
    throws SQLException {
return cpds.getConnection();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我完成执行查询时,我不确定它是否是将连接返回池的正确方法.我想是的

conn.close()
Run Code Online (Sandbox Code Playgroud)

只是将连接返回到池而不是真正关闭连接.我是正确的还是有其他方法吗?请帮忙.

java c3p0

12
推荐指数
1
解决办法
6792
查看次数

C3P0配置!在哪里和如何?

我们正在使用JPA2.0和Hibernate3.0实现Web应用程序.连接池配置在位于META-INF文件夹中的persistence.xml中设置.


persistence.xml中:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="MyPU" transaction-type="RESOURCE_LOCAL">
        <!-- Entity Classes-->
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="bytecode.provider"   value="org.hibernate.bytecode.javassist.BytecodeProviderImpl"/>
            <property name="hibernate.connection.username" value="{username}"/>
            <property name="hibernate.connection.password" value="{password}"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.url" value="{jdbc url}"/>

            <property name="hibernate.c3p0.min_size" value="1"/>
            <property name="hibernate.c3p0.timeout" value="1000"/>
            <property name="hibernate.c3p0.acquire_increment" value="1"/>
            <property name="hibernate.c3p0.idle_test_periods" value="600"/>
            <property name="hibernate.c3p0.testConnectionOnCheckin" value="true"/>
            <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1;"/>
       </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

我们遇到连接池配置问题.似乎配置没有效果,连接将在8小时后中断.我们需要另一个配置文件,如hibernate.cfg.xml或hibernate.properties吗?

欢迎任何帮助.

java hibernate connection-pooling c3p0 jpa-2.0

11
推荐指数
1
解决办法
2万
查看次数

我无法运行C3P0ConnectionProvider

我的hibernate.cfg.xml

<property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="show_sql">true</property>
        <property name="connection.url">jdbc:postgresql://localhost:5432/pirates</property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">mmm888</property>

        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="show_sql">false</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="current_session_context_class">thread</property>

        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">200</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>
        <property name="hibernate.generate_statistics">true</property>
Run Code Online (Sandbox Code Playgroud)

我的图书馆:

hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.10.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-validator-4.2.0.Final.jar
jbossjta-4.16.4.Final.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
openjdk-6-b14.jar
validation-api-1.0.0.GA.jar
hibernate-c3p0-4.1.10.Final.jar
Run Code Online (Sandbox Code Playgroud)

和我的错误:

29.04.2013 14:02:43 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator getConfiguredConnectionProviderName
WARN: HHH000208: org.hibernate.connection.C3P0ConnectionProvider has been deprecated in favor of org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider; that provider will be used instead.
29.04.2013 14:02:43 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator instantiateExplicitConnectionProvider
INFO: HHH000130: Instantiating explicit connection provider: org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
Failed to create sessionFactory …
Run Code Online (Sandbox Code Playgroud)

java hibernate c3p0

11
推荐指数
2
解决办法
2万
查看次数

C3p0 APPARENT DEADLOCK异常

我在Tomcat日志中不断收到此异常:

com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@76b28200 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@76b28200 -- APPARENT DEADLOCK!!! Complete Status: 
    Managed Threads: 3
    Active Threads: 3
    Active Tasks: 
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1201fd18 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@408f3be4 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@7ba516d8 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
    Pending Tasks: 
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@137efe53
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@766b0524
Pool thread stack traces:
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
        java.lang.Thread.sleep(Native Method)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
        java.lang.Thread.sleep(Native Method)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
        java.lang.Thread.sleep(Native Method)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Run Code Online (Sandbox Code Playgroud)

我正在使用Hibernate 3.6.2和C3P0 0.9.1.2与MySQL.经过几个小时的Google搜索,这个APPARENT DEADLOCK异常似乎通常与准备好的语句缓存相关联.这是我的hibernate.cfg.xml中的C3P0配置:

<propertyname="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">60</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.timeout">180</property>              
<property name="hibernate.c3p0.max_statements">0</property>
Run Code Online (Sandbox Code Playgroud)

我没有做任何声明缓存.任何有关错误的提示将不胜感激.

mysql hibernate c3p0 database-deadlocks

11
推荐指数
1
解决办法
2万
查看次数

maxIdleTimeExcessConnections与c3p0中的maxIdleTime有何不同?

我想配置我的c3p0连接池,以便至少有2个连接始终处于活动状态,最多5个,并且超过前2个的空闲连接将在合理的时间内(比如一小时)到期.

除了文档似乎暗示有职能部门之间没有区别这一切听起来简单maxIdleTimemaxIdleTimeExcessConnections,这是混淆了我.

基本池配置状态:

在minPoolSize和maxPoolSize之间的范围内,池中的连接数根据使用模式而有所不同.每当用户请求连接,没有可用的连接,并且池中尚未达到管理的Connections数量的maxPoolSize时,连接数就会增加.由于连接获取速度非常慢,因此在批量生成中急切地增加连接数量几乎总是有用的,而不是强迫每个客户端等待新连接在负载增加时引发单个获取.acquireIncrement确定当池用完连接时c3p0池将尝试获取的连接数.(无论acquireIncrement如何,池都不会允许超出maxPoolSize.)

minPoolSize用法:

池在任何给定时间将保持的最小连接数.

好,太棒了.并且用于配置连接时间:

maxIdleTimeExcessConnections用于在池未加载时最小化c3p0池所持有的Connections数.默认情况下,c3p0池在负载下增长,但只有在Connections通过Connection测试失败或通过上述参数过期时才会收缩.一些用户希望他们的池在强制使用大量池大小的使用高峰后快速释放不必要的连接.您可以通过将maxIdleTimeExcessConnections设置为比maxIdleTime短得多的值来实现此目的,如果它们闲置超过一小段时间,则会强制释放超出设置的最小大小的连接.

所以它暗示minPoolSize只有在与之结合使用时才有意义maxIdleTimeExcessConnections,否则,它将完全被忽略.

证实文件maxIdleTime没有提及minPoolSize:

秒可以在丢弃之前保持连接但未使用.零意味着空闲连接永不过期.

而且maxIdleTimeExcessConnections是有道理的:

在剔除之前,应允许超过minPoolSize的连接在池中保持空闲的秒数.适用于希望积极减少打开连接数的应用程序,如果在峰值之后,负载级别减少并且不再需要连接,则将池缩回minPoolSize.如果设置了maxIdleTime,则如果参数有效,则maxIdleTimeExcessConnections应该更小.零意味着没有强制执行,多余的连接不会被闲置.

我觉得很奇怪minPoolSize,一个基本功能,只有在我看来是一个更高级的功能时使用才有意义.这都是正确的吗?

java connection-pooling jdbc c3p0

11
推荐指数
1
解决办法
8593
查看次数

Hibernate"APPARENT DEADLOCK !!!为未分配的待处理任务创建紧急线程!"

我最近在日志中收到以下消息,然后是JVM崩溃(由于OOME).我不知道该怎么做,并且非常感谢任何指导.

2015-03-19 21:15:02,457 [Timer-0] WARN  (ThreadPoolAsynchronousRunner.java [run]:608) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@6824f21c -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 
2015-03-19 21:26:29,543 [Timer-0] WARN  (ThreadPoolAsynchronousRunner.java [run]:624) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@6824f21c -- APPARENT DEADLOCK!!! Complete Status: 
    Managed Threads: 3
    Active Threads: 3
    Active Tasks: 
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@15da1b6b (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@b35b08a (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@51cfdd17 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
    Pending Tasks: 
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@19397937
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@5c7d3838
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@7aea62dd
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@55622ff2
        com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@74004a8
Pool thread stack traces:
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:560)
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
        java.net.SocketOutputStream.socketWrite0(Native Method)
        java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
        java.net.SocketOutputStream.write(SocketOutputStream.java:153)
        java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
        com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3227)
        com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1917)
        com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
        com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
        com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1751)
        com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3425)
        com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2196)
        com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
        com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
        sun.reflect.GeneratedConstructorAccessor306.newInstance(Unknown Source)
        sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        java.lang.reflect.Constructor.newInstance(Constructor.java:408)
        com.mysql.jdbc.Util.handleNewInstance(Util.java:406) …
Run Code Online (Sandbox Code Playgroud)

java hibernate c3p0

11
推荐指数
2
解决办法
2万
查看次数

postgres中有很多SHOW TRANSACTION ISOLATION LEVEL查询

我正在使用Hibernate 4,PostgreSQL和C3P0.

在我的Web应用程序中,经过一段时间后,我SHOW TRANSACTION ISOLATION LEVEL在数据库中收到多个查询,因为我的服务器挂起了.在我的代码中,我的所有连接都已正确关闭.

是否由于连接泄漏?

java postgresql hibernate c3p0

11
推荐指数
2
解决办法
7880
查看次数

耗尽数据库连接!

我正在使用c3p0作为我的连接池运行Spring/Hibernate连接到MySQL设置.由于某些奇怪的原因,当系统处于负载状态时(当然)它会耗尽连接.

在我们开始达到新的流量水平(超过一百个并发用户)之前,该网站非常稳定.此时DB会熔化(固定CPU).我的第一个动作是在应用程序中通过广泛的缓存和查询优化等来提高性能.

现在它将间歇性地耗尽连接.它似乎甚至不依赖于负载.更多准时,这让我觉得这是一个泄漏,但对于我的生活,我无法弄清楚它将来自何处.

    WARN [2011-03-07 17:19:42,409] [TP-Processor38] (JDBCExceptionReporter.java:100) - SQL Error: 0, SQLState: null
ERROR [2011-03-07 17:19:42,409] [TP-Processor38] (JDBCExceptionReporter.java:101) - An attempt by a client to checkout a Connection has timed out.
ERROR [2011-03-07 17:19:42,410] [TP-Processor38] (HttpHeadFilter.java:46) - There was a problem passing thru filter:/is-this-guy-crazy-or-just-a-huge-dancing-with-the-stars-fan
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

Caused by: java.sql.SQLException: An attempt by a …
Run Code Online (Sandbox Code Playgroud)

connection spring hibernate pooling c3p0

10
推荐指数
2
解决办法
4万
查看次数