如何使用码头和弹簧靴收集和获取连接池统计信息? [英] How to collect and get connection pool statistics using jetty and spring boot?

查看:102
本文介绍了如何使用码头和弹簧靴收集和获取连接池统计信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用嵌入式Jetty服务器开发简单的Spring Boot Web应用程序.

I'm developing simple Spring Boot web application with embedded Jetty server.

我想提供一些有关连接池使用情况的统计信息(即,多少线程,平均请求时间,平均队列等待时间,队列大小等)

I'd like to have some statistics on connection pool usage (i.e. how many threads, avg request time. avg queue wait time, queue size etc.)

我意识到Spring Boot用QueuedThreadPool配置了Jetty,这几乎没有基本指标.在Spring Boot中是否有指定用于收集统计信息的更复杂的bean或模块?如何启用它?

I realized that Spring Boot configures Jetty with QueuedThreadPool which has few basic metrics. Is there more sophisticated bean or module designated for statistics collecting in Spring Boot? How to enable it?

推荐答案

有一个MonitoredQueuedThreadPool实现,用于收集统计信息.下面的代码将其启用,并通过JMX公开:

There is a MonitoredQueuedThreadPool implementation that collects stats. The code below enables it and exposes via JMX:

@Bean
public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory(@Value("${server.port:8080}") final String port) {

    JettyEmbeddedServletContainerFactory factory =  new JettyEmbeddedServletContainerFactory(Integer.valueOf(port));

    //enable thread pool with stats
    factory.setThreadPool(new MonitoredQueuedThreadPool());

    //enable JMX
    factory.addServerCustomizers(server -> {
        MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
        server.addEventListener(mbContainer);
        server.addBean(mbContainer);
        server.addBean(Log.getLog());

    });

    return factory;
}

JMX bean暴露在节点下:

JMX bean is exposed under node:

它提供指标:

这篇关于如何使用码头和弹簧靴收集和获取连接池统计信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆