如何配置 JavaMelody 以监控 C3p0 数据源中的 Jdbc 连接

Posted

技术标签:

【中文标题】如何配置 JavaMelody 以监控 C3p0 数据源中的 Jdbc 连接【英文标题】:How to configure JavaMelody to Monitor Jdbc Connections in C3p0 DataSource 【发布时间】:2018-06-26 00:36:51 【问题描述】:

我正在使用 Spring 配置文件来配置 C3P0。为了监控 DataSource,我配置了net.bull.javamelody.SpringDataSourceFactoryBean,如 javamelody 的用户指南中所述。但我的报告显示 0 个活动 jdbc 连接,而我的 minPoolSize 为 10。我错过了什么?

web.xml 中添加了monitoring-spring.xml

<context-param>
    <param-name>
        contextConfigLocation
    </param-name>
    <param-value>
        classpath:net/bull/javamelody/monitoring-spring.xml,
    </param-value>
</context-param>

在Spring jdbc的配置文件是:

<bean id="sql2oDatasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="#dbProps['ops.jdbc.driverClassName']"/>
    <property name="jdbcUrl" value="#dbProps['ops.jdbc.url']"/>
    <property name="user" value="#dbProps['ops.jdbc.username']"/>
    <property name="password" value="#dbProps['ops.jdbc.password']"/>
    <property name="maxPoolSize" value="#dbProps['ops.c3p0.max_size']"/>
    <property name="minPoolSize" value="#dbProps['ops.c3p0.min_size']"/>
    <property name="maxStatements" value="#dbProps['ops.c3p0.max_statements']"/>
    <property name="checkoutTimeout" value="#dbProps['ops.c3p0.timeout']"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
</bean>
<!-- Configuring the session factory for SQL-2-O -->
<bean id="sql2oSession" class="org.sql2o.Sql2o">
    <constructor-arg ref="wrappedDBDataSource"/>
    <constructor-arg value="PostgreSQL" type="org.sql2o.QuirksMode"/>
</bean>
<bean id="wrappedDBDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean" primary="true">
    <property name="targetName" value="sql2oDatasource"/>
</bean>

我尝试在数据源中将DriverClass 传递为net.bull.javamelody.JdbcDriver 并将driver 传递为:

<property name="properties">
    <props>
        <prop key="driver">org.postgresql.Driver</prop>
    </props>
</property>

但是postgresql 驱动程序没有以这种方式注册。

【问题讨论】:

【参考方案1】:

根据documentation,您的配置看起来不错。您会在报告中看到 db 活动连接、池大小值,这也意味着您的配置正常。

另一方面,活跃的数据库连接数表示在那一刻有多少来自数据库连接池的连接正在与数据库连接。 0 个活动连接对您有好处(如果您的应用程序工作正常)。这意味着您的数据库操作很快完成。数据库操作速度快时,很难捕获活动连接。

【讨论】:

活动 jdbc 连接数图没有显示任何内容。它只是空图。至少应该有一些峰值。活动 jdbc 连接和池大小不一样 ??. 活动连接数和池大小不一样。我不确定为什么你的图表是空的。可能是您的数据库活动太低了。您可以模拟一段时间的高数据库活动,然后检查图表。

以上是关于如何配置 JavaMelody 以监控 C3p0 数据源中的 Jdbc 连接的主要内容,如果未能解决你的问题,请参考以下文章

使用javamelody监控springboot项目

JavaMelody 项目性能监控和调优工具

使用JavaMelody监控tomcat以及jvm

javamelody tomcat 虚拟主机

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告

JavaMelody 配置数据