近几天,项目组在开发大数据接入的功能,在调试接入数据的代码时,发现偶尔会出现程序执行一半时无故暂停,经过断点排查,发现线程挂起在SocketInputStream socketRead0,且不会再执行,百度了很多信息,都没有找到类似的问题和解决办法,只好自已动手排查了,根据堆栈信息进行排查,发现是在对oracle数据库连接执行commit时出现的这个问题,经过对代码的排查,发现由于框架中使用的数据库封装对象默认设置了autoCommit=true,导致在插入每条数据之后都会执行commit操作,修改代码,set autoCommit=false,然后每500条数据commit一次,这个错误终于消失了,特此记录
Oracle数据库频繁commit导致线程在SocketInputStream socketRead0方法挂起
最新推荐文章于 2024-05-09 22:28:49 发布