应用不停的获取数据库连接导致数据库挂掉

CALY_浮生 发布于 2017/04/05 14:25
阅读 444
收藏 0

各位大牛们好,请教个问题,困扰几天了,救命。。。

环境:spring4.1.1+spring mvc+hibernate4.3.7,oracle11数据库,连接池druid1.0.20,fastjson1.1.34,服务器CentOS release 6.7 (Final),jdk1.8,tomcat8.5.8

集群环境:1台nginx服务器,2台应用服务器A、B

问题:系统升级后出现不停取数据库连接的情况,很快就将数据库连接撑满导致无法正常使用。

详细描述:

       系统之前一直正常运行,前几天做了一次升级,把fastjson从1.1.34升级到1.2.29,具体操作和以往升级一样,如下:

            1、ps -ef | grep java查看,使用kill+进程号停掉tomcat

            2、替换程序中lib目录下的fastjson包

            3、使用startup.sh启动

    升级后立即验证功能,一切正常,第二天早上,A服务器正常,B服务器突然不停向数据库请求数据库连接,感觉连接池没了作用,数据库连接持续增长,直到挂掉。以下是日志信息。

    连接池配置:

tomcat日志,A服务器正常,B服务发现异常,估计是使用kill命令没有立即杀死进程,导致tomcat没有正常启动成功


B服务器应用程序日志,出现找不到fastjson的异常,但是也不应该一直请求数据库啊

oracle日志,全是B服务器的请求

出现问题后,切换至测试库,程序没动,重启tomcat后,一直就没出现问题了,尝试过各种情况,都无法重现不停请求数据库的这种情况,请问各位大牛有没有遇到过这种。。。

这种风险很大,领导让找出具体原因,头快炸了,求各位大牛解惑,小弟先谢过。

加载中
0
码媛
码媛

推荐一个开源&私有化部署的移动应用数据统计系统Cobub Razor 查看详情
安装部署文档:http://docs.cobub.com/pages/viewpage.action?pageId=884864

0
Kit_lee
Kit_lee

为什么不是用shutdown.sh来关tomcat?不断放数据库连接请求也可能是连接不到数据库,不断重试

0
oscben
oscben

哈哈,你们也换fastjson的jar包了 ,因为之前的版本有bug吧 。

看你应该是用ide吧 我的ide有时候刚更新完打包的时候会丢失文件

 你们当时打的war包还有吗  看看war包里有没有新版本的fastjson jar包 

然后看看是不是因为找不到文件 抛出了异常 也没有写finally 导致session没关闭

0
CALY_浮生
CALY_浮生

引用来自“Kit_lee”的评论

为什么不是用shutdown.sh来关tomcat?不断放数据库连接请求也可能是连接不到数据库,不断重试

以前习惯用kill了,没出什么问题。。。尴尬

0
CALY_浮生
CALY_浮生

引用来自“oscben”的评论

哈哈,你们也换fastjson的jar包了 ,因为之前的版本有bug吧 。

看你应该是用ide吧 我的ide有时候刚更新完打包的时候会丢失文件

 你们当时打的war包还有吗  看看war包里有没有新版本的fastjson jar包 

然后看看是不是因为找不到文件 抛出了异常 也没有写finally 导致session没关闭

就是看了fastjson老版本有漏洞,所以升下级,没想到悲剧了。

程序中都是用的sessionFactory.getCurrentSession()获取的连接,应该不用手动关闭吧。

我怀疑是fastjson包没找到,所以影响到了druid,因为我在日志中发现了这个异常,但就是重现不了

0
wenshao
wenshao

感觉是打包的问题哈?

CALY_浮生
CALY_浮生
公司同事之前讨论也认为是部署升级时造成的,但是一直重现不了,客户那边不好解释。。。/尴尬
返回顶部
顶部