博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle JDBC hang on
阅读量:4315 次
发布时间:2019-06-06

本文共 1032 字,大约阅读时间需要 3 分钟。

从你的日志信息来看有很多阻塞的线程,当达到weblogic设置的600秒后就会报错,原因有很多最常见的有两种:
一种是当线程请求数据库连接时没有可用的连接因此在等待然后超时,解决方法是看看weblogic和数据库方面对新连接有没有限制,有的话把限制解除。
第二种就是代码问题了,对于这个问题简单来说就是内存泄露和线程死锁导致wls hang,可能是你的代码问题也可能是使用的三方框架的bug,通常是使用命令工具查找是哪个线程泄露和死锁,解决wls hang可用参照以下方法:
Hang产生的原因一般为:
–系统内存不足
–系统cpu忙
–系统文件描述符数目不足
–线程死锁
–JVM有GC方面的bug
–对于一些特定的情况可以使用truss命令跟踪系统调用来进行分析

线程死锁

–对于原因不明的hang或是响应慢,最根本的方法就是获取thread dump信息
•对于windows系统,在运行java的窗口按Ctrl+Break
•对于unix系统,首先用ps找到运行weblogic的java进程的pid,然后执行kill –3pid
•JVM将负责将所有java进程的状态、执行堆栈dump到其标准输出
•为了方便获取thread dump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件
•为了反映线程状态的动态变化,需要接连多次做thread dump,每次间隔10-20s
对于thread dump信息,主要关注的是线程的状态和其执行堆栈
–线程的状态一般为三类
•Runnable(R):当前可以运行的线程
•Waiting on monitor(CW):线程主动wait
•Waiting for monitor entry(MW):线程等锁
–一般关注的都是第一和第三种状态的线程
•Cpu很忙则关注runnable的线程
•Cpu闲则关注waiting for monitor entry的线程
–一种典型的死锁是由于在server端应用(比如servlet)中请求由同一weblogic实例serve的资源
•解决办法就是将该servlet放到另外的执行队列里去执行
可以看我以前给你的帖子weblogic高CPU的分析---就在本论坛

 

Oracle又hang on了,关注一下:

转载于:https://www.cnblogs.com/diyunpeng/archive/2011/12/06/2277503.html

你可能感兴趣的文章
mac 终端 常用命令
查看>>
EGL接口介绍-----Android OpenGL ES底层开发
查看>>
电梯调度程序的UI设计
查看>>
转自 zera php中extends和implements的区别
查看>>
Array.of使用实例
查看>>
【Luogu】P2498拯救小云公主(spfa)
查看>>
如何获取网站icon
查看>>
几种排序写法
查看>>
java 多线程的应用场景
查看>>
dell support
查看>>
CodeForces 1037B Reach Median_贪心
查看>>
cmdb项目实现方案
查看>>
微信自定义分享到朋友圈
查看>>
Linux基础命令---chmod
查看>>
转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决...
查看>>
雷林鹏分享:C# 封装
查看>>
解决“Eclipse中启动Tomcat后,http://localhost:8080/无法访问”的问题
查看>>
2个星期的金工实习
查看>>
Linux 安装操作系统标准
查看>>
spring 异常管理机制
查看>>