`
jh108020
  • 浏览: 110274 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

c3p0,oscache,jedis的bug

 
阅读更多
jdk版本
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
BEA JRockit(R) (build R27.5.0-110_o-99226-1.6.0_03-20080528-1505-linux-x86_64, compiled mode)

c3p0版本0.9.1,0.9.1.2在高并发时,测试2000并发出现线程阻塞,resin服务挂起,dump线程出现
 "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" id=85 BLOCKED
	waiting on com.mchange.v2.resourcepool.BasicResourcePool@33479e3
      at com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask.run (BasicResourcePool.java:1229)
      at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run (ThreadPoolAsynchronousRunner.java:547)
 
 "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" id=86 BLOCKED
	waiting on com.mysql.jdbc.JDBC4ResultSet@eaa775
	owned by "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2"
      at com.mysql.jdbc.ResultSetImpl.realClose (ResultSetImpl.java:7478)                                      

c3p0作者也说了
https://github.com/swaldman/c3p0/issues/10
this looks very similar to a deadlock reported on SourceForge here. It's fixed already in the latest snapshot release of c3p0-0.9.5-pre3. give that a shot if you can (and let me know how it goes!). if not, c3p0-0.9.5-pre3 (non-SNAPSHOT) will be published very shortly. i may backport this fix to the stable 0.9.2 series, but not until people have kicked around 0.9.5-pre3 for a while.

as an aside, it looks like you have not set a preferredTestQuery or automaticTestTable, and so are using the default DatabaseMetaData.getTables(...) Connection test. That's slow; I strongly suggest defining a preferredTestQuery.

good luck!

换用dbcp 1.4版本没出现问题,配置如下
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<property name="testOnBorrow" value="false" />
		<property name="testWhileIdle" value="true" />
		<!--#给出一条简单的sql语句进行验证 -->
		<!--#在取出连接时进行有效验证 -->
		<property name="validationQuery" value="select 1 from dual" />

		<property name="removeAbandonedTimeout" value="120" />
		<property name="removeAbandoned" value="true" />
		<!-- #运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
		<property name="timeBetweenEvictionRunsMillis" value="3600000" />
		<!-- #连接的超时时间,默认为半小时。 -->
		<property name="minEvictableIdleTimeMillis" value="3600000" />
		<!-- 连接池启动时的初始值 -->
		<property name="initialSize" value="100" />
		<!-- 连接池的最大值 -->
		<property name="maxActive" value="2000" />
		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
		<property name="maxIdle" value="300" />
		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
		<property name="minIdle" value="200" />
		<!-- 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常-->
		<property name="maxWait" value="6000" />



oscache2.4.1在高并发时也会出现线程阻塞,resin服务挂起
    -- Waiting for notification on: com/opensymphony/oscache/base/EntryUpdateState@0x48702240[fat lock]
    at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
    at java/lang/Object.wait(J)V(Native Method)
    at java/lang/Object.wait(Object.java:485)
    at com/opensymphony/oscache/base/Cache.getFromCache(Cache.java:278)
    ^-- Lock released while waiting: com/opensymphony/oscache/base/EntryUpdateState@0x48702240[fat lock]
    at com/opensymphony/oscache/base/Cache.getFromCache(Cache.java:199)
    at com/opensymphony/oscache/general/GeneralCacheAdministrator.getFromCache(GeneralCacheAdministrator.java:132)


jedis2.1.0在高并发时偶尔会出现线程短暂的阻塞,resin服务没有挂起,还能正常访问
分享到:
评论

相关推荐

    OSCache学习例子 实例

    OSCache是开源的Java缓存解决方案,主要用于提高Web应用程序的性能和响应速度。它是由OpenSymphony团队开发的,能够缓存对象、SQL查询结果甚至整个页面,避免了频繁访问数据库或执行昂贵的计算,从而降低了系统负载...

    oscache缓存配置

    《osCache缓存配置详解》 osCache是Java平台上的一个高效、易用的缓存解决方案,它由Tuckey组织开发,广泛应用于各种Web应用中,以提高数据读取速度,减轻数据库压力。osCache的核心功能是提供了一个内存中的对象...

    oscache-2.4.1-full

    这个版本可能包含了对先前版本的优化和修复,比如性能提升、bug修复或者新特性的添加。具体改进可以通过查看"readme.txt"文件来了解,这个文件通常会包含版本更新日志。 4. **目录结构**: - `oscache-2.4.1.jar`...

    oscache-2.1.jar

    oscache-2.1.jar oscache-2.1.jar

    Oscache框架的搭建步骤

    ### Oscache框架的搭建与应用详解 在现代Web开发中,缓存技术是提升系统响应速度、优化用户体验的关键策略之一。Oscache框架作为一种高效、灵活的缓存解决方案,在Java Web应用,尤其是JSP环境中,提供了强大的缓存...

    oscache缓存技术入门实例

    osCache 是一个开源的、基于Java的缓存框架,它为Java应用程序提供了高效且可配置的内存缓存功能。在本文中,我们将深入探讨osCache的基本概念、工作原理以及如何在实际项目中进行配置和使用。 一、osCache基本概念...

    OSCache需要的包

    OSCache 是一个高效的、开源的缓存框架,主要用于 Java 应用程序,它提供了一种在内存中存储对象的方式,以提高数据访问速度并减轻数据库的负载。在Java Web开发中,OSCache常被用于实现Session复制和分布式缓存,...

    oscache详细配置文档

    OSCache 是一个强大的开源缓存解决方案,主要用于提升 Java Web 应用程序的性能。它能够缓存页面内容,减轻数据库压力,并减少服务器的资源消耗。本文将详细介绍 OSCache 的配置和使用方法。 **一、缓存整个页面** ...

    OSCache配置说明文档

    本文档的主要目的是阐述OSCache的核心功能、配置方法以及实际应用中的操作步骤,帮助开发者理解和有效地利用OSCache提升应用程序性能。 阅读对象: 此文档适合对Java Web开发有一定了解,希望引入缓存机制以优化...

    oscache(JSP定制标记应用)

    javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,例如pdf文件等。通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善...

    oscache-java缓存框架

    osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...

    oscache所需jar包

    这个版本(2.4.1)代表了该软件的一个稳定版本,可能包含了一些bug修复和性能优化。`osCache`提供了一套完整的API,允许开发者方便地集成到他们的应用中,包括添加、更新、检索和删除缓存中的对象,以及设置缓存策略...

    oscache处理

    - 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...

    oscache的使用实例和详解

    **osCache:高效缓存框架详解与实例应用** osCache是一款流行且强大的Java缓存框架,主要用于提高应用程序的性能和响应速度。它通过将经常访问的数据存储在内存中,避免了反复读取数据库或计算数据的过程,从而显著...

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    OsCache缓存框架使用示例

    OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...

    oscache-2.2jar包

    osCache是Java平台上的一个开源缓存解决方案,主要用于提高应用程序的性能和响应速度。oscache-2.2jar包是该软件的一个版本,版本号为2.2。它包含了一系列的类和接口,用于实现内存中的对象缓存,从而减少对数据库或...

    oscache的例子

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    oscache缓存技术

    **osCache缓存技术详解** osCache是一款广泛应用于Java应用程序中的开源缓存解决方案,由OpenSymphony团队开发。它提供了一种高效、可扩展的方式来管理应用程序中的数据缓存,从而提高系统的性能和响应速度。...

Global site tag (gtag.js) - Google Analytics