咨询Tomcat(Java)中含STW垃圾回收时间的请求时间JMX指标
关于Catalina JMX中包含GC时间的请求时间指标的解答
- Catalina(Tomcat)的原生JMX指标里,没有直接提供已计入GC停顿时间的端到端请求时间指标。
- 现有的Tomcat请求处理时间指标(比如
Catalina:type=GlobalRequestProcessor,name="http-nio-8080"下的requestProcessingTime),仅记录Tomcat线程实际处理请求的CPU时间,不会包含JVM GC停顿期间的等待时间——因为GC触发时,Tomcat的请求线程会被暂停,计时器不会累加这段停顿时间。 - 如果需要获取包含GC时间的JVM内部端到端请求时间,有两种可行方式:
- 组合现有指标计算:结合JVM GC的累计停顿时间(
java.lang:type=GarbageCollector,name=*下的CollectionTime)和Tomcat的请求处理总时长、请求数,估算单请求平均包含的GC时间,但这种方式不够精准,只能做宏观趋势分析。 - 自定义指标实现:在应用层面通过Filter或Servlet拦截请求,用
System.nanoTime()记录请求进入JVM到完全响应结束的时间差,这段时间会自动包含GC停顿、线程阻塞等所有JVM内部耗时,再将这个自定义时间指标暴露到JMX中。
- 组合现有指标计算:结合JVM GC的累计停顿时间(
内容的提问来源于stack exchange,提问作者netmon80
相关产品推荐
相关产品推荐

