使用集智报表平台链接断开解决方法
集智报表平台一般是提供给终端客户使用,有些终端有相关的技术人员,有些则是只有网管的人员并不懂技术,所以一般集智报表平台出现了问题,都会初步认为由于润乾所产生,例如下文提出了一个由于数据库连接断开而产生的错误。
据多天的测试反馈,在访问平台时候会出现如下错误:
java.sql.sqlexception: io exception broken pipe
从报错信息看是数据库连接断开的错误,可以暂时理解跟润乾并无关系,里面报的runqian的错,应该是要调用数据库连接时出错产生的。产生此问题的原因不唯一,通过查找大致有如下解决方式:
1,更换数据库驱动
2,加大tomcat启动内存
3,连接池问题,可以看下客户连接池是如何配的,在确定下数据库连接数,如果这个数太小,只有个三四个肯定不够。如果连接池配置的太高了,而实际使用并不需要那么高,也可能会有此问题。
另外可以在换一种连接池方式试下,比如客户是在conf\Catalina\localhost下配的,可以换成在context.xml配下试试。
4,网络连接问题,如果数据库不在本机,看一下网络延迟。可以检查一下数据库是否有异常多的连接。另外,局域网络的内部网络连接是否有问题。
经过详细了解,在客户环境下出现此问题是有规律的,只有在第二天登陆才会有这个问题。
应该处于第四种的可能比较大,很可能客户的数据库端在一夜没动自定关闭了链接,或者网络断掉等,问题应该出在客户的数据库端或者网络上。需要数据库DBA监控下数据库的使用情况,具体问题具体分析
再次了解到,tomcat和数据库不在同一个网段,并且每天早晨报错后,用tomcat同网段的电脑访问数据库可以访问。所以可以确定是tomcat连接池中的链接失效了,可是并没有释放。
数据库连接从本质上架构在tcp/ip连接之上,一般情况下web服务器与数据库服务器都不在同一台物理机器上,而是通过网络进行连接,那么当建立数据库连接池的机器与数据库服务器自己出现网络异常时,保持在连接池中的连接将失效,不能够在次使用,传统的情况下只能通过重新启动,再次建立连接,通过设置以上两个参数,但应用程序从连接池中获取连接时,会首先进行活动性检测,当获取的连接是活动的时候才会给应用程序使用,如果连接失效,连接将释放该连接。validationQuery是一条测试语句,没有实际意义,现实中,一般用一条最为简单的查询语句充当。
在连接池中增加 如下语句:
testOnBorrow=”true”
validationQuery=”select count(*) from t_user”
则可以解决。