【问题标题】:How to collect and get connection pool statistics using jetty and spring boot?如何使用 jetty 和 spring boot 收集和获取连接池统计信息?
【发布时间】:2019-12-15 19:30:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: java spring-boot jetty connection-pooling embedded-jetty


    【解决方案1】:

    您看过 Spring Boot 执行器吗? 它为您提供了一些生产就绪功能,例如健康端点和指标端点。 看看文档https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html

    【讨论】:

      【解决方案2】:

      有一个收集统计信息的 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属性/统计。
      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2023-02-08
      • 2015-08-18
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多