当前位置:web 服务器 > Tomcat >>

Tomcat7 StuckThreadDetectionValve 功能分析

 本月Tomcat 7.0.14版本正式发布,其最显著的一个新功能就是引入了StuckThreadDetectionValve功能,该功能可以帮助分析和检查耗时的请求或潜在可能会出现请求线程阻塞等情况。

    StuckThreadDetectionValve(阻塞线程检测)功能是通过扩展Tomcat的Valve机制进行实现。下面是针对此块代码的实现主要源代码进行的分析,来探究一下该功能的实现原理。

   下面是核心的代码片段,但从实现思路上还是比较好理解的,针对所有的tomcat请求,该valve都会拦截,并到当的执行的线程通过一个引入进行保存,记录开始时间。同时启动MonitoredThread线程对当前请求线程的运行时间进行检测,一旦出现超出设置的时候值,则会进行保存,这样可以就很容易的获取那些效率低下的请求线程情况。

整体类图如下:
\

以下是几个重要的全局属性:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

\

stuckCount 可能为阻塞的线程数

threshold 阻塞线程判断的运行时间的依据,超过该时间上限,则将环境该线程为阻塞线程

activeThreads 当前正在运行中的线程

completedStuckThreadsQueue 已经执行完成的阻塞线程情况

invoke 方法代码如下:

\

补充:web前端 , HTML/CSS  ,
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,