近期公司一个项目让我修改,程序总是在数据库服务重启的情况下出问题。究其原因锁定为连接池配置。
由于用到的是Proxool连接池,我是第一次接触这个。所以在网上找了下相关资料。大部分都是讲怎么配置,千篇一律
大抄抄小抄抄,抄来抄去。废话就不多说了。
公司的程序是一直和数据库做交互的。当程序运行过程中,我停掉数据库服务,本应看到:
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
链接失败的异常,但是程序并没有抛出这个异常,而是链接成功。只是在从数据库中取数据时发生问题抛出如下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error
可惜头脑简单的我在网上狂找socket write error这个问题出现的原因和解决办法。
“
这个问题一般是客户端在连接还没有完全建立的时候就取消连接,比如用户按了浏览器上面的“停止”按钮,一般来说没有什么问题。但是如果频繁出现,就表示很多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题
可能你的网络连接存在一些问题,你的数据传输的时候,可能由于时间等待的太久,但是server段设置的连接检验时间限制一定,那么就可能出现这种情况的!
不过更常见的原因是:
1:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
2:客户关掉了浏览器,而服务器还在给客户端发送数据;
3:浏览器端按了Stop;
4:服务器给客户端响应结果给防火墙拦截了。
”
但是程序是并不是web程序。仔细想了想问题应该不是这个。然后通过看Proxool连接池配置和此问题的原因,我马上又锁定
Proxool配置中的“house-keeping-sleep-time”这项配置。但是把时间调短还是不能解决问题。
没办法只好继续在网上找。看到有些文中指出添加test-before-use配置,即每次取出连接都检查连接是否可用,就可以做到让连接池实现在故障恢复后自动重连接
但是我添加后还是抛出错误。而且是程序已启动就抛出错误
java.sql.SQLException: Created a new connection but it failed its test
一看错误是test错误。这是为啥呢?
看配置才知道有这么一项配置:house-keeping-test-sql
看网上90%的讲proxool的配置的文章test语句都是这个:select CURRENT_DATE
就连我要改的程序中的也是配置成这个语句,哎。copy,绝对的copy
因为我们公司用的是sql server2005,select CURRENT_DATE这个语句在mssql上根本就是错误的。
所以会抛出Created a new connection but it failed its test异常。因为添加test-before-use这个后,会检查连接是否可用。但是此时sql语句有误,怎么检查?
改成select getdate()问题搞定。此错误搞定
分享到:
相关推荐
下面将详细讲解Proxool连接池的使用方法及其核心概念。 1. **Proxool简介** Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。Proxool通过创建一个数据库连接池来管理数据库连接...
Proxool连接池使用方法 首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面, 另外, 把你的 jdbc driver 也放到相同的 lib,
在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要工具。Proxool是一个开源的、轻量级的Java数据库连接池实现,它提供了一种高效、灵活的方式来管理数据库连接。在某些场景下,为了保护敏感信息,如...
项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用
在Java开发中,使用Hibernate作为持久层框架时,为了提高数据库操作的性能和资源利用率,通常会引入连接池技术。Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池实现。本篇将详细介绍如何在...
-- 连接池的别名 --> <alias>DBPool</alias> - <!-- proxool只能管理由自己产生的连接 --> <driver-url>jdbc:sqlserver://localhost:1433;dataBaseName=books</driver-url> - <!-- JDBC驱动程序 --> ...
3. **监控功能**:独特的监控机制使得开发者可以实时查看连接池的状态,如当前连接数、空闲连接数、等待连接数等,这有助于及时发现并解决连接泄漏问题。 4. **诊断能力**:当系统出现异常时,Proxool能提供详细的...
**Hibernate Proxool连接池配置详解** 在Java应用程序中,数据库连接池是管理数据库连接的一种高效...理解并掌握Proxool的各项配置参数,以及在遇到问题时能及时诊断和解决,能够帮助我们构建更加稳定和高效的系统。
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...
尽管Proxool具有很多优点,但在现代开发中,更常见的是使用如HikariCP、C3P0、DBCP或Apache DBCP2等其他连接池。这些连接池在性能、稳定性、社区支持和功能方面可能更胜一筹。然而,Proxool 的简单性和易于配置使其...
Proxool是一个开源的轻量级Java数据库连接池实现,其主要目标是替代常见的数据库连接池解决方案,如C3P0或DBCP,并且提供了更加灵活和易于配置的特性。在实际应用中,合理配置Proxool可以显著提高系统的性能和稳定性...
在本压缩包中,包含的是与Proxool连接池相关的MySQL驱动jar包,这将有助于在Java应用程序中建立与MySQL数据库的连接。 首先,我们来深入理解一下Proxool连接池。Proxool的核心功能是创建一个池化的数据库连接集合,...
Proxool连接池是数据库连接管理的一个开源工具,它提供了一种高效且灵活的方式来管理和复用数据库连接,以提升...在选择和使用数据库连接池时,需要根据项目需求考虑其特性、性能和兼容性,以选择最适合的解决方案。
**JSP与Proxool连接池的深度解析** 在Java Web开发中,数据库连接管理是一项重要的...在提供的压缩包文件中,`Tomcat连接池文件`可能包含了更具体的配置示例和使用指南,有助于深入理解和实践`JSP`与`Proxool`的整合。
3. Proxool配置:除了在Hibernate配置文件中设置基本的数据库连接信息,我们还可以在Proxool的配置文件(如proxool.xml)中设置更详细的连接池参数,比如最大连接数、最小空闲连接数、超时时间等,以优化连接池性能...
在学习Proxool的过程中,提供的文档是十分重要的,它将详细介绍如何配置、使用和诊断Proxool连接池,以确保你在实际项目中能够充分利用其优势,优化数据库访问效率。通过阅读文档,你可以了解更深入的细节,例如连接...
在这个"ssh2简单案例"中,我们将探讨如何结合注解、Proxool连接池和SF4J日志记录来构建一个SSH2注册登录系统。 首先,SSH2在Java中的实现通常通过JSch库来完成。JSch允许开发者在Java程序中执行命令、传输文件以及...
在这个"Proxool连接池实例.zip"压缩包中,我们可以推测包含了一些关于如何在C#环境下集成和使用Proxool连接池的示例代码和相关资源。 首先,让我们深入理解一下Proxool连接池的工作原理。Proxool维护了一个数据库...
在这里,我们通过`dataSource`属性引用了上面配置的数据源,这样Hibernate就能使用Proxool连接池进行数据库操作。 5. 在`hibernateProperties`中,我们设置了`hibernate.dialect`为`MySQLDialect`,表示使用的是...