Java 如何使用jetty和spring boot收集和获取连接池统计信息?

Java 如何使用jetty和spring boot收集和获取连接池统计信息?,java,spring-boot,jetty,connection-pooling,embedded-jetty,Java,Spring Boot,Jetty,Connection Pooling,Embedded Jetty,我正在用嵌入式Jetty服务器开发简单的Spring Boot web应用程序 我想了解一些关于连接池使用情况的统计信息(例如,线程数、平均请求时间、平均队列等待时间、队列大小等) 我意识到Spring Boot使用QueuedThreadPool配置Jetty,它几乎没有基本指标。是否有更复杂的bean或模块指定用于在Spring Boot中收集统计数据?如何启用它?您看过弹簧启动执行器吗? 它为您提供了一些生产准备功能,如健康端点和度量端点。 只要看一下文档就知道有一个收集统计数据的Moni

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

我想了解一些关于连接池使用情况的统计信息(例如,线程数、平均请求时间、平均队列等待时间、队列大小等)


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

您看过弹簧启动执行器吗? 它为您提供了一些生产准备功能,如健康端点和度量端点。
只要看一下文档

就知道有一个收集统计数据的MonitoredQueuedThreadPool实现。下面的代码启用它并通过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在节点下公开:

它提供了以下指标:


默认的
QueuedThreadPool
也具有相同的JMX属性/统计信息。