欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Hikari連接池使用SpringBoot配置JMX監(jiān)控實現(xiàn)

 更新時間:2021年07月09日 09:32:08   作者:sev7n  
Hikari是Spring Boot默認(rèn)的數(shù)據(jù)庫連接池。區(qū)別于C3P0直接通過連接池對象獲取各項狀態(tài)指標(biāo),Hikari需要通過JMX來獲取。本文就詳細(xì)的來介紹一下,感興趣的可以了解一下

Hikari是Spring Boot默認(rèn)的數(shù)據(jù)庫連接池。區(qū)別于C3P0直接通過連接池對象獲取各項狀態(tài)指標(biāo),Hikari需要通過JMX來獲取。Demo如下,采用Spring Boot集成,定時采集連接狀態(tài)。

public static void main(String[] args) throws SQLException, MalformedObjectNameException, InterruptedException {
 SpringApplication.run(HikariTest.class, args);
 HikariDataSource hikaridatasource = new HikariDataSource();
 hikaridatasource.setJdbcUrl("jdbc:mysql://localhost:3306?serverTimezone=GMT");
 hikaridatasource.setUsername("root");
 hikaridatasource.setPassword("");
 hikaridatasource.setDriverClassName("com.mysql.cj.jdbc.Driver");
 hikaridatasource.setRegisterMbeans(true);
 hikaridatasource.setPoolName("HikariConnectionPool");
 MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
 ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + hikaridatasource.getPoolName() + ")");
 poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
 Connection conn = hikaridatasource.getConnection();
 Statement sm = conn.createStatement();
 ResultSet rs = null;
 for (int i = 0; i < 999999999; i++) {
  rs = sm.executeQuery("select name from test.t1");
 }
 rs.close();
 sm.close();
 conn.close();
 hikaridatasource.close();
}

@Scheduled(fixedRate = 1000)
public void HikariMonitor() {
 if(poolProxy == null) {
  log.info("Hikari not initialized,please wait...");
 }else {
  log.info("HikariPoolState = "
  + "Active=[" + String.valueOf(poolProxy.getActiveConnections() + "] "
  + "Idle=[" + String.valueOf(poolProxy.getIdleConnections() + "] "
  + "Wait=["+poolProxy.getThreadsAwaitingConnection()+"] "
  + "Total=["+poolProxy.getTotalConnections()+"]")));
 } 
}

另外,在github有提到這樣的issue:

ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + hikaridatasource.getPoolName() + ")");

可能會拋錯

22:06:23.231 [main] DEBUG com.zaxxer.hikari.HikariConfig - Driver class com.mysql.cj.jdbc.Driver found in Thread context class loader sun.misc.Launcher$AppClassLoader@73d16e93
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
 at com.sun.proxy.$Proxy2.getIdleConnections(Unknown Source)
 at com.zte.hikariTest.HikariTest.main(HikariTest.java:32)
Caused by: javax.management.InstanceNotFoundException: com.zaxxer.hikari:type=Pool (foo)
 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(Unknown Source)
 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(Unknown Source)
 at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(Unknown Source)
 at com.sun.jmx.mbeanserver.MXBeanProxy$GetHandler.invoke(Unknown Source)
 at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(Unknown Source)
 at javax.management.MBeanServerInvocationHandler.invoke(Unknown Source)
 ... 2 more

這是因為Hikari設(shè)置參數(shù)同樣支持setHikariConfig和配置文件兩種配置方式,請選擇其中一種進(jìn)行配置,而不是二者一起使用。并且請配置屬性如下,否則 JMX 無法生效。

hikaridatasource.setRegisterMbeans(true);

代碼效果如下所示

2019-03-09 02:05:04.738 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]
2019-03-09 02:05:05.740 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]
2019-03-09 02:05:06.732 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]
2019-03-09 02:05:07.738 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]

到此這篇關(guān)于Hikari連接池使用SpringBoot配置JMX監(jiān)控的文章就介紹到這了,更多相關(guān)SpringBoot配置JMX監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實現(xiàn)手機(jī)短信驗證的基本思路

    java實現(xiàn)手機(jī)短信驗證的基本思路

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)手機(jī)短信驗證的基本思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java合并區(qū)間的實現(xiàn)

    Java合并區(qū)間的實現(xiàn)

    本文主要介紹了Java合并區(qū)間的實現(xiàn),通過合理使用集合類和排序算法,可以有效地解決合并區(qū)間問題,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Spring事務(wù)管理中的異?;貪L是什么

    Spring事務(wù)管理中的異?;貪L是什么

    Spring中的代碼出現(xiàn)異常時會回滾這是大家都希望的情況,這時候可以用@Transactional這個注解放在你的方法上來進(jìn)行回滾,這時候有個問題就是事務(wù)回滾是不希望你在Controller進(jìn)行處理,而是在Service層來進(jìn)行處理
    2023-02-02
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(46)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(46)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Springboot框架整合添加redis緩存功能

    Springboot框架整合添加redis緩存功能

    緩存就是一個存儲器,在技術(shù)選型中,常用?Redis?作為緩存數(shù)據(jù)庫。緩存主要是在獲取資源方便性能優(yōu)化的關(guān)鍵方面。Redis?是一個高性能的?key-value?數(shù)據(jù)庫,接下來通過本文給大家介紹Springboot框架整合添加redis緩存功能,感興趣的朋友一起看看吧
    2021-11-11
  • Spring Boot項目打包指定包名實現(xiàn)示例

    Spring Boot項目打包指定包名實現(xiàn)示例

    這篇文章主要為大家介紹了Spring Boot項目打包指定包名實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 詳解SpringMVC的攔截器鏈實現(xiàn)及攔截器鏈配置

    詳解SpringMVC的攔截器鏈實現(xiàn)及攔截器鏈配置

    攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下
    2022-08-08
  • Mybatis攔截器打印sql問題

    Mybatis攔截器打印sql問題

    這篇文章主要介紹了Mybatis攔截器打印sql問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 使用springboot單元測試對weblistener的加載測試

    使用springboot單元測試對weblistener的加載測試

    這篇文章主要介紹了使用springboot單元測試對weblistener的加載測試,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring MVC傳遞接收參數(shù)方式小結(jié)

    Spring MVC傳遞接收參數(shù)方式小結(jié)

    大家在開發(fā)中經(jīng)常會用到Spring MVC Controller來接收請求參數(shù),主要常用的接收方式就是通過實體對象以及形參等方式、有些用于GET請求,有些用于POST請求,有些用于兩者,下面介紹幾種常見的Spring MVC傳遞接收參數(shù)的方式
    2021-11-11

最新評論