WebLogic执行线程耗尽解决方案
WebLogic执行线程耗尽
1.1、概述 更多WebLogic相关知识·:
WebLogic集群管理 生活中常用脚本及运维技巧 WebLogic图形化安装及静默安装
WebLogic服务器执行线程耗尽后就不再响应后续请求,WebLogic即出现挂起现象。
WebLogic线程耗尽产生的原因有多种,一般而言线程耗尽是由于线程在争夺某种资源。当一种资源处于缺少状态,比如数据库JDBC连接池的达到最大连接数,就会导致后续的业务线程都卡在等待获取JDBC的连接上,最终导致服务器无法响应后续的服务请求。
1.2、常见线程耗尽原因
WebLogic服务器线程耗尽,最常见的几种原因如下:
WebLogic、JDK自身的Bug
业务系统中采用的开源软件的Bug
主机硬件到达上限瓶颈,无法承担更多的负载
数据库JDBC连接池耗光,后续业务线程无法获取到可用JDBC连接而一直处于等待状态
应用程序同步调用。比如业务线程A执行的过程中锁定了资源1,而由于同步调用的原因导致其他业务线程不得不一直无限等待资源1的锁被释放。
业务系统没有使用WebLogic线程池,而使用自定义的线程池。当自定义线程池全部被占用,就会导致没有线程可用于新工作。
线程都处于等待RJVM、RMI响应
应用配置不合理,比如设置了错误JSP PageCheckSeconds参数等
1.3、判断条件
在出现以下情况时怀疑WebLogic服务器线程耗尽:
服务器不响应新的请求
请求超时
请求处理的时间越来越长(其最终结果可能是挂起)
通常,服务器挂起不会表现为服务器崩溃,但服务器挂起之后可能会崩溃。
1.4、收集信息
当服务器挂起时,首先使用 java weblogic.Admin t3://server:port PING 来 ping 该服务器。如果服务器能够响应此 ping,则可能是应用程序所使用的线程池耗尽而不是服务器自身。
WebLogic Server 在8