Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan kumpulan sambungan Hikari dan mengkonfigurasi pemantauan JMX menggunakan SpringBoot

Bagaimana untuk melaksanakan kumpulan sambungan Hikari dan mengkonfigurasi pemantauan JMX menggunakan SpringBoot

王林
Lepaskan: 2023-05-15 19:58:04
ke hadapan
1789 orang telah melayarinya

Hikari ialah kumpulan sambungan pangkalan data lalai Spring Boot. Berbeza daripada C3P0, yang memperoleh pelbagai penunjuk status secara terus melalui objek kolam sambungan, Hikari perlu mendapatkannya melalui JMX. Demo adalah seperti berikut, menggunakan integrasi Spring Boot untuk mengumpul status sambungan dengan kerap.

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()+"]")));
 } 
}
Salin selepas log masuk

Selain itu, terdapat isu sedemikian yang disebut di github:

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

boleh membuang ralat

22:06:23.231 [ utama] DEBUG com.zaxxer.hikari.HikariConfig - Kelas pemacu com.mysql.cj.jdbc.Pemandu ditemui dalam Thread context class loader sun.misc.Launcher$AppClassLoader@73d16e93
Pengecualian dalam thread "main" java.lang . reflect.UndeclaredThrowableException
di com.sun.proxy.$Proxy2.getIdleConnections(Sumber Tidak Diketahui)
di com.zte.hikariTest.HikariTest.main(HikariTest.java:32)
Disebabkan oleh: javax. pengurusan .InstanceNotFoundException: com.zaxxer.hikari:type=Pool (foo)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(Unknown Source)
at com.sun.jmx.interceptor.DefaultAtributMBenterceptor.DefaultInterceptor. ( Sumber Tidak Diketahui)
di com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(Sumber Tidak Diketahui)
di com.sun.jmx.mbeanserver.MXBeanProxy$GetHandler.invoke(Sumber Tidak Diketahui)
di com. sun .jmx.mbeanserver.MXBeanProxy.invoke(Sumber Tidak Diketahui)
di javax.management.MBeanServerInvocationHandler.invoke(Sumber Tidak Diketahui)
... 2 lagi

Ini kerana Hikari menetapkan parameter Ia juga menyokong dua kaedah konfigurasi: setHikariConfig dan fail konfigurasi Sila pilih salah satu daripadanya untuk konfigurasi dan bukannya menggunakan kedua-duanya bersama-sama. Dan sila konfigurasikan sifat seperti berikut, jika tidak JMX tidak akan berkuat kuasa.

hikaridatasource.setRegisterMbeans(true);
Salin selepas log masuk

Kesan kod adalah seperti berikut

2019-03-09 02:05:04.738 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Aktif=[1] Terbiar=[9] Tunggu=[0] Jumlah=[10]
2019-03-09 02:05:05.740 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Aktif=[ 1 ] Terbiar=[9] Tunggu=[0] Jumlah=[10]
2019-03-09 02:05:06.732 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Aktif=[1] Terbiar= [ 9] Tunggu=[0] Jumlah=[10]
2019-03-09 02:05:07.738 MAKLUMAT com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Terbiar=[9] Tunggu = [0] Jumlah=[10]

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kumpulan sambungan Hikari dan mengkonfigurasi pemantauan JMX menggunakan SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan