【问题标题】:unexpected Spring Boot metrics for org.apache.tomcat.jdbc.pool.DataSourceorg.apache.tomcat.jdbc.pool.DataSource 的意外 Spring Boot 指标
【发布时间】:2016-08-30 14:41:59
【问题描述】:

我正在使用带有池化数据源的 Spring Boot

datasource:
  type: org.apache.tomcat.jdbc.pool.DataSource
  driverClassName: com.mysql.jdbc.Driver
  url:  ...
  username: ...
  password: ...
  tomcat:
    max-active: 50
    max-idle: 50
    testOnBorrow: true
    validationQuery: select 1;
    validationInterval: 30000

这个配置是正确的,因为日志文件包含 10x 以下行:

16:27:52.191 [] [  restartedMain] DEBUG g.apache.tomcat.jdbc.pool.PooledConnection - Instantiating driver using class: com.mysql.jdbc.Driver [url=...]

之后,我开始使用该应用程序并发出一些数据库请求。 DAO 实现使用 JPAContext 和 EntityManager,由 Spring 自动装配并完美地从数据库返回预期结果。

@Autowired
private JpaContext jpaContext;

@Autowired
private EntityManager em;

EntityManager em = jpaContext.getEntityManagerByManagedType(DownloadHistoryItemCustomEntity.class);
Query q = em.createNativeQuery(query, DownloadHistoryItemCustomEntity.class);

但是,Spring Boot 指标并未显示该单个数据源的任何使用情况

http://localhost:8080/metrics    
  "datasource.primary.active": 0,
  "datasource.primary.usage": 0.0

为什么没有值 > 0 ?
我希望值大于零!
“主要”不是正确的数据源吗?

多米尼克

【问题讨论】:

    标签: spring-boot metrics tomcat-jdbc


    【解决方案1】:

    datasource.primary.active 是当前活动连接数。 datasource.primary.usage 是一个介于 0 和 1 之间的值,其中 0 表示没有活动连接,1 表示池中的每个连接都处于活动状态。对于非零值,当您向/metrics 端点发出请求时,数据库连接必须处于活动状态。

    【讨论】:

    • 当我在一个浏览器窗口中发出请求时,另一个浏览器窗口中的计数器(刷新 1/2 秒后)显示为零。至少活动连接的数量应该大于零,因为连接不会在请求之后立即关闭/删除,不是吗?
    • 是的。一旦工作完成,连接就会返回到池中,通常是在提交协调工作的事务时。这将在发送响应之前发生。
    猜你喜欢
    • 2016-07-24
    • 2019-03-23
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多