热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

一次c3p0连接池连接异常错误的排查

最近写了一个数据库采集程序,大概过程是将SQLSERVER数据库的数据定时采集到Oracle数据库。1小时出一次数据,每次数据量在2W左右。环境采用Sping3+hibernate4,数据库连接池采用C3p0奇怪的时候每隔一段时间都会报:c3p0connectionisalreadyclosed我开始

最近写了一个数据库采集程序,大概过程是将SQLSERVER数据库的数据定时采集到Oracle数据库。1小时出一次数据,每次数据量在2W左右。环境采用Sping3+hibernate4,数据库连接池采用C3p0 奇怪的时候每隔一段时间都会报:c3p0 connection is already closed 我开始

最近写了一个数据库采集程序,大概过程是将SQLSERVER数据库的数据定时采集到Oracle数据库。1小时出一次数据,每次数据量在2W左右。环境采用Sping3+hibernate4,数据库连接池采用C3p0

奇怪的时候每隔一段时间都会报:“c3p0 connection is already closed”

我开始的数据库连接池配置如下:oracle数据库开启事务,而采集的sqlserver数据库没有开启事务

jdbc.driverClass=oracle.jdbc.OracleDriver
jdbc.jdbcUrl=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.12.18.240)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))
jdbc.user=appds
jdbc.password=appds
c3p0.acquireIncrement=5
c3p0.maxIdleTime=60
c3p0.maxPoolSize=80
c3p0.minPoolSize=10
c3p0.initialPoolSize=10
c3p0.maxStatements=0
c3p0.idleCOnnectionTestPeriod=60
c3p0.acquireRetryAttempts=30
c3p0.acquireRetryDelay=1000
c3p0.breakAfterAcquireFailure=false
c3p0.testCOnnectionOnCheckout=false

jdbcdata.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbcdata.jdbcUrl=jdbc:sqlserver://10.12.18.241:1433;databaseName=data;
jdbcdata.user=cawasdatauser
jdbcdata.password=cawas606
c3p0ObsDataDB.maxPoolSize=30
发现了问题,我首先在c3p0上加上调试信息的配置:

c3p0.debugUnreturnedCOnnectionStackTraces=true
c3p0.unreturnedCOnnectionTimeout=90 (我的连接超时时间是60s,所以这设置了90s)

applicationContext数据源配置增加响应配置


果然发现很多未回收的连接,正常情况下超时未回收的连接会有一些,但是不会这么多啊。

经查资料在hibernate sessionFacory中增加配置(http://hi.baidu.com/austincao/item/fc9907da3d854e44fa576861)

Spring3.1去掉了HibernateDaoSupport类。hibernate4需要通过getCurrentSession()获取session。并且设置
org.springframework.orm.hibernate4.SpringSessionContext

在Spring @Transactional声明式事务管理,”currentSession”的定义为: 当前被 Spring事务管理器 管理的Session,此时应配置:
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext。

另外在hibernate中使用sessionFactory.getCurrentSession()获取session时,需要为方法声明事务,为此将sqlserver

采集的代码也加上事务


推荐阅读
  • 如何高效地将微信收藏夹中的内容导出至外部设备或平台? ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细解析了MySQL中的多表联合查询技术,涵盖了内连接、外连接和交叉连接三种主要类型。通过具体示例,深入探讨了每种连接方式的使用场景和实现方法,帮助读者全面掌握SQL查询技巧,提升数据处理能力。 ... [详细]
  • 在数据库事务处理中,InnoDB 存储引擎提供了多种隔离级别,其中 READ COMMITTED 和 REPEATABLE READ 是两个常用的选项。本文详细对比了这两种隔离级别的特点和差异,不仅从理论角度分析了它们对“脏读”和“幻读”的处理方式,还结合实际应用场景探讨了它们在并发控制和性能表现上的不同。特别关注了行锁机制在不同隔离级别下的行为,为开发者选择合适的隔离级别提供了参考。 ... [详细]
  • 在使用PFC进行数据处理时,遇到了数据列消失的问题。具体表现为,在数据窗口dw_1中,原本点击排序按钮cb_1后,会弹出一个排序窗口并显示所有字段。然而,目前点击排序按钮时,数据列却无法正常显示。为了解决这一问题,需要检查数据源的配置和按钮事件的触发逻辑,确保数据列能够正确加载和显示。 ... [详细]
  • 实现Nginx对ThinkPHP URL重写及PATHINFO支持的详细方法解析【PHP开发】
    在PHP后端开发中,实现Nginx对ThinkPHP的URL重写及PATHINFO支持是一项常见的需求。本文详细解析了经过多次尝试和研究,最终找到的一种有效配置方法,能够确保URL_MODERewrite功能正常运行,并提供稳定的服务。此外,文章还探讨了相关配置项的具体作用及其优化建议,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 开发日志:在插入数据到一张表的同时更新另一张表的技术细节与最佳实践 ... [详细]
  • 在近期的项目开发过程中,ORM层采用了MyBatis,并且需要连接多个数据库,这带来了多数据源配置的挑战。为了解决这一问题,我们可以通过巧妙运用注解来实现优雅的数据源切换,确保系统的灵活性和可维护性。这种方法不仅简化了配置,还提高了代码的可读性和扩展性。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
  • 如何在Android设备上通过应用程序创建浏览器书签 ... [详细]
  • 本文深入探讨了 DB2 SQL 中多列更新语句的应用与技巧,通过具体示例详细介绍了多列更新的语法和实际操作方法。例如,使用以下语法可以同时更新多个字段:```sqlUPDATE T_TableSET (字段A, 字段B) = (value_a, value_b);```文章还进一步分析了多列更新在性能优化和数据一致性方面的优势,并提供了实用的案例和最佳实践。 ... [详细]
  • 本文深入探讨了 MySQL 中 `ANALYZE TABLE` 和 `SHOW CREATE TABLE` 的语法规则及其应用。`ANALYZE TABLE` 语句用于分析并存储表的关键字分布情况,以优化查询性能。该操作在执行过程中会获取表的读锁,确保数据的一致性。而 `SHOW CREATE TABLE` 则用于显示创建表时的详细语句,包括表结构、索引和存储引擎等信息,有助于数据库管理和维护。通过这些命令,DBA 可以更好地理解和优化数据库性能。 ... [详细]
  • 在数据库设计中,谨慎使用外键至关重要。本文探讨了九个关键原因,包括数据完整性的维护、性能优化、系统复杂性的管理、数据迁移的灵活性以及对外部系统的依赖性控制。通过深入分析这些因素,可以帮助开发人员和架构师做出更明智的设计决策,确保数据库系统的高效与稳定。 ... [详细]
  • InnoDB当前仅支持一次创建一个FULLTEXT索引 ... [详细]
  • MySQL 数据备份与恢复的常见方法及其实践经验总结。物理备份涉及直接复制数据库文件,适用于大规模数据库环境,但无法在异构系统(如 Windows)中恢复。逻辑备份则侧重于导出建表语句和数据插入语句,便于跨平台迁移和部分数据恢复。此外,本文还探讨了增量备份、全量备份以及使用工具如 mysqldump 和 Percona XtraBackup 的具体应用场景和优缺点。 ... [详细]
author-avatar
愛妳yi輩zi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有