`

连接池问题

    博客分类:
  • JAVA
 
阅读更多


connection耗尽不一定就是由connection leak引起,如果你的执行队列中线程数设置的比connection pool大,而且你的某些程序占用connection时间过长,致使执行队列中的线程已经把connection pool中的所有的connection都申请出来了,此时如果再有新的执行线程响应请求申请connection,pool中已经告罄,connection就无从得到了,只有等待。这从控制台的connection监控中是看得出的。这种情况下,如果程序能正确关闭connection,connection还是会被释放的,不会泄露。

还有一种情况是已获得connection的线程间发生了死锁,没法去释放connection,使得connection被一直占用。这要去重点检查一下应用中的synchronize代码段和涉及数据库锁的代码。同时可以定时,尤其是系统挂了后作一下thread dump,重点看看运行中和等待资源的线程在忙什么和等什么。

如果要查connection leak,还是得从应用入手,仔细检查connection的分配与释放。确保connection的释放代码放在finally段中。还有就是重点检查connection有没有被一些static对象引用。泄露往往就发生在这里。JVM的GC对付一般的Connection leak还是很有效的,比如说未关闭的connection只是函数中的局部变量且并未被其它对象引用。但GC对被Static对象引用的connection是有心无力。

用profiling工具可以辅助侦测connection leak,具体做法是在CPU的代码执行视图的代码执行树里,检查get connection与close connection的执行次数是否相同?如果get connection执行次数大于close connection,这就要重点检查一下了。这一类的工具有很多,常见的有:JProfiler,JProbe,OptimizeIt

分享到:
评论

相关推荐

    jsp中文帮助 超实用的数据库连接池问题

    在解决数据库连接池问题时,常见问题包括连接泄露、性能瓶颈、连接超时等。连接泄露通常是因为程序没有正确关闭数据库连接,导致连接池中的连接逐渐耗尽。性能瓶颈可能源于设置不当的最大和最小连接数,需要根据应用...

    有关struts中的数据库连接池问题解决

    ### 有关Struts中的数据库连接池问题解决 在开发基于Web的应用程序时,尤其是在使用Struts框架这样的MVC(Model-View-Controller)架构中,数据库连接管理是至关重要的一个环节。由于数据库连接是一种关键、有限且...

    C3p0连接池问题

    博客文章《C3p0连接池问题》可能深入探讨了这些细节,并给出了具体的案例和解决方案。通过阅读该文章,开发者可以更好地理解和解决C3p0连接池在实际应用中可能出现的各种问题,提升系统的稳定性和效率。同时,了解C3...

    数据库连接池问题.doc

    为了解决这个问题,引入了数据库连接池技术。 1. **数据库连接池的工作原理** 数据库连接池在初始化时会创建一定数量的数据库连接并存储起来,这些连接在应用程序需要时可以从池中获取,用完后归还到池中,而不是...

    连接池案例 连接池案例

    在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。连接池的基本思想是重用已建立的数据库连接,避免频繁创建和销毁连接带来的性能开销。本篇文章将深入探讨连接池的概念、工作原理以及如何在实际...

    Java连接池评估报告

    #### 二、当前使用的连接池问题 当前许多应用采用的是Proxool连接池。然而,在高并发环境下,Proxool连接池暴露出了一些不足之处: 1. **高并发异常**: - `DataSource.getConnection()` 方法会根据`...

    kafka生产者连接池

    为了优化性能和提高效率,开发人员常常会利用连接池技术来管理Kafka生产者的连接。本文将深入探讨"Kafka生产者连接池"的概念、实现原理以及它如何提升系统性能。 Kafka生产者连接池是一种资源复用机制,它允许多个...

    okhttp中连接池实现

    它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...

    Tomcat连接池配置.doc

    Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...

    Mongodb连接池for java

    描述中提到的“解决连接池不够的问题,多连接的问题”,意味着在实际项目开发中,可能会遇到因为数据库连接数量不足或者频繁创建和关闭连接导致的性能瓶颈。通过使用连接池,开发者可以在应用启动时预先分配一定数量...

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    java ftp连接池

    Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池和阿里 Druid 连接池的配置和比较 Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库...

    C#高效数据库连接池源码

    - **线程安全**:在多线程环境下,连接池必须确保并发安全,防止数据竞争和同步问题。 6. **性能优化**: - **最小/最大连接数**:设置合适的最小和最大连接数,平衡资源使用和性能需求。 - **连接检测**:定期...

    weblogic连接池配置数据库断掉重连的问题

    Weblogic 连接池配置数据库断掉重连的问题 在 Weblogic 中,连接池配置数据库断掉重连是一个非常重要的问题。连接池配置是 Weblogic 中的一种机制,用于管理与数据库的连接。然而,在实际应用中,我们经常会遇到...

    java socket连接池 实现

    为了解决这个问题,开发人员通常会使用连接池来管理和复用已建立的Socket连接。 首先,我们来看一下Socket的基本概念。Socket是网络编程中的一个抽象概念,它代表了两台机器间的一个双向通信链路。在Java中,`java...

    c# mysql数据库连接池实现

    在.NET Core 2.1框架下,可以使用.NET Standard库来实现高效、优化的数据库连接管理,特别是通过连接池来提高性能。本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。...

    socket 客户端连接池实现

    Socket客户端连接池是一种在分布式系统或网络编程中提高性能和效率的重要技术。它允许应用程序预先创建并维护一组可重用的Socket连接,从而避免了每次通信时建立新连接的开销。本文将深入探讨Socket客户端连接池的...

    java 数据库 连接池驱动.rar

    Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...

Global site tag (gtag.js) - Google Analytics