我在SprintBoot 2上配置了一个DB连接(HikariCP)。我在application.properties中定义了poolName:
spring.datasource.hikari.poolName=HikariConnectionPool
我想监控空闲的数据库连接的数量,所以我试图创建一个线程来监控数据库连接:
public class HikariCPStatistics implements Runnable {
public static final Logger logger = LoggerFactory.getLogger(HikariCPStatistics.class);
private static HikariPoolMXBean poolProxy;
public HikariCPStatistics() {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
try {
ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (HikariConnectionPool)");
poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
logger.info("Starting Connection Pool status monitor");
while ( true ) {
logger.info("Hikari - Idle Connections: " + poolProxy.getIdleConnections());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
logger.error("Fail to run Connection Pool status monitor");
e.printStackTrace();
}
}
}
}
但我得到一个例外,它无法找到poolName HikariConnectionPool的实例。关于如何获得HikariCP管理的空闲DB连接,有什么建议吗?
进一步html" target="_blank">分析,我可以看到SpringBoot实际上并没有在JMX中注册池bean。SpringBoot只在JMX中发布HikariDataSource bean,它具有Hikari dataSource的静态配置。从我所看到的,Hikari支持2种不同的配置模式:
1)通过HikariConfig类进行配置
2)HikariDataSource的直接配置
SpringBoot正在使用第二个选项。
我在过去尝试过配置HikariCP的第一个选项(没有SpringBoot)这是注册池和池配置豆......池bean是我感兴趣的一个,它有连接的用法。
有人知道我如何配置SpringBoot中安装的HikariDataSource选项(1-HikariConfig类)吗?或者用springboot创建一个池Bean?
谢谢。
这就是我监视连接池的方式
HikariPool hikariPool = (HikariPool)
new DirectFieldAccessor(dataSource).getPropertyValue("pool");
//Getting pool connection info
logger.info(" hikariPool getActiveConnections : " + hikariPool.getActiveConnections());
logger.info(" hikariPool getTotalConnections : " + hikariPool.getTotalConnections());
logger.info(" hikariPool getIdleConnections : " + hikariPool.getIdleConnections());
logger.info(" hikariPool getThreadsAwaitingConnection : " + hikariPool.getThreadsAwaitingConnection());
//Getting maximum pool size - set from properties
Integer t= new HikariDataSourcePoolMetadata((HikariDataSource) dataSource).getMax();
logger.info(" hikariPool Maximum Pool Size : " + t.toString());
通过注入HikariDataSource,您可以从Hikari连接池获得大量信息。甚至作为一个列表。
private final List<HikariDataSource> hikariConfigMXBeans;
infos like name = hikariDataSource.getPoolName();
idleTimeout = hikariDataSource.getIdleTimeout();
validationTimeout = hikariDataSource.getValidationTimeout();
connectionTimeout = hikariDataSource.getConnectionTimeout();
leakDetectionThreshold = hikariDataSource.getLeakDetectionThreshold();
maxLifetime = hikariDataSource.getMaxLifetime();
minimumIdle = hikariDataSource.getMinimumIdle();
maxPoolSize = hikariDataSource.getMaximumPoolSize();
从这里很容易创建一个执行器endpoint来显示此信息。
希望这是你需要监控的信息
要获得HIKARIPC管理的“空闲DB连接”,首先获取Spring Boot使用的HikariPool
HikariPool hikariPool = (HikariPool) new DirectFieldAccessor(getDataSource()).getPropertyValue("pool");
然后使用HikariPool方法获取当前空闲连接状态:
hikariPool.getIdleConnections();
要通过HikariConfig初始化,请参阅Hikari的初始化
新配置:
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.set用户名("bart");
..
HikariDataSource ds=new HikariDataSource(配置);
数据库解决方案:每当工具A运行时,它会添加一个数据库记录,其中包括时间戳、元数据和状态“运行”。如果执行了工具A,而工具B应该运行,它会将DB记录状态更新为“NEXT_TOOL_B”。工具B经常查询DB中具有“NEXT_TOOL_B”状态的记录。如果它发现了一些东西,工具B将使用来自DB记录的元数据运行。 虽然我意识到数据库解决方案的缺点,例如从工具B进行持续轮询,但我错过了基于消息的解决方案中的
问题内容: 我正在使用node.js服务器在Web应用程序和数据库之间创建一个“接近实时”套接字。当前,我使用的是MySQL,它每秒在节点中轮询一次,以检查表是否有任何更改(基于时间戳)。 我想知道是否有使用MySQL进行此类操作的特定技术?目前,我只是在运行SQL查询并在下一次轮询之前使用setTimeout。 我知道在这样的实例中使用NoSQL数据库更为普遍,但我对技术并不满意,我宁愿使用SQ
连接数据库 在能够对MongDB进行操作之前,需要使用BuguFramework创建一个数据库连接,代码如下: BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.connect("192.168.0.100", 27017, "mydb", "username", "password"); 也可以
一、全局配置定义 return array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'thinkcmf', 'DB_USER' => 'root', 'DB_PWD' => 'root', 'DB_PORT' => '3306', 'DB_PREFIX' =>
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。数据库抽象访问层基于PDO方式,目前内置包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。 如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。 配置文件
这一节我们编写一个监视器:EventLogMonitor ,也就是用来接收事件的程序,用来代替 netcat 。EventLogMonitor 做下面事情: 接收 LogEventBroadcaster 广播的 UDP DatagramPacket 解码 LogEvent 消息 输出 LogEvent 消息 和之前一样,将实现自定义 ChannelHandler 的逻辑。图13.4描述了LogEv