HikariCP 6.3.0 完整配置与 Keepalive 优化指南

HikariCP 6.3.0 完整配置与 Keepalive 优化指南

HikariCP 是一个高性能、轻量级的 JDBC 连接池框架,广泛应用于 Java 应用,尤其是 Spring Boot 项目。本文档基于 HikariCP 6.3.0 版本,详细介绍其功能、配置参数、Keepalive 机制以及优化建议,特别说明其与 Linux TCP Keepalive 的区别,阐明为何通常无需修改系统级配置(如 /etc/sysctl.conf)。本文内容经过结构优化,旨在为开发者提供清晰、实用的参考。


文章目录

  • HikariCP 6.3.0 完整配置与 Keepalive 优化指南
    • 一、HikariCP 简介
      • 核心特点
      • 发展历程
    • 二、HikariCP 功能
    • 三、HikariCP 配置参数
      • 3.1 基本配置
      • 3.2 池管理
      • 3.3 超时控制
      • 3.4 验证与监控
      • 3.5 高级配置
      • 3.6 6.3.0 新特性
    • 四、HikariCP Keepalive 机制
      • 4.1 作用
      • 4.2 配置参数
        • 关键特性
        • 配置示例
      • 4.3 与 Linux TCP Keepalive 的区别
        • 为何无需修改 `/etc/sysctl.conf`?
        • 何时需要 Linux TCP Keepalive?
        • Linux TCP Keepalive 配置示例
    • 五、使用 HikariCP
      • 5.1 单独使用
      • 5.2 Spring Boot 集成
    • 六、优化与监控建议
      • 6.1 配置优化
      • 6.2 监控与调优
      • 6.3 Keepalive 优化
    • 七、完整配置文件示例
    • 八、注意事项
    • 九、参考资源
    • 十、总结

一、HikariCP 简介

HikariCP 由 Brett Wooldridge 于 2012 年开发,名称“Hikari”在日语中意为“光”,象征其高效与快速。它以零开销、高性能著称,自 Spring Boot 2.x 起成为默认连接池,广泛应用于微服务和云原生架构。

核心特点

  • 轻量:JAR 文件约 135KB,代码精简。
  • 高性能:通过字节码优化(如 Javassist)、ConcurrentBag 和 FastList,显著降低延迟。
  • 可靠:自动失效连接检测、连接泄漏监控。
  • 易用:配置简单,默认设置适用于大多数场景。

发展历程

  • 2012年:HikariCP 诞生,解决 C3P0、DBCP 等连接池性能问题。
  • 2014年:1.x 版本发布,引入核心优化技术。
  • 2017年:2.x 版本支持 Java 7/8,新增健康检查和 Dropwizard Metrics。
  • 2018年:Spring Boot 2.x 默认采用 HikariCP。
  • 2020-2023年:4.x 和 5.x 版本优化数据库兼容性,修复边缘问题。
  • 2025年:6.3.0 版本支持时间单位配置、20% Keepalive 方差,保持高性能标杆地位。

官方仓库:https://github.com/brettwooldridge/HikariCP


二、HikariCP 功能

HikariCP 提供以下功能,满足现代 Java 应用需求:

  1. 高效连接池管理
    • 预建连接池,减少连接创建/关闭开销。
    • 动态调整池大小,适应高并发。
  2. 性能优化
    • ConcurrentBag 实现无锁连接管理。
    • 字节码优化降低 CPU 消耗。
    • FastList 替代 ArrayList,提升集合性能。
  3. 连接验证
    • 自动检测失效连接(如数据库宕机)。
    • 支持自定义测试查询(如 SELECT 1)。
  4. 监控与管理
    • JMX 集成,实时监控池状态。
    • 支持 Dropwizard Metrics 和 Micrometer。
  5. 灵活配置
    • 支持属性文件、环境变量、程序化配置。
    • 兼容 MySQL、PostgreSQL、Oracle 等数据库。
  6. 连接泄漏检测
    • 通过 leakDetectionThreshold 监控未关闭连接。
  7. 高级功能
    • 支持只读模式、连接池暂停/恢复。
    • 提供自定义 SQLException 处理。

三、HikariCP 配置参数

HikariCP 6.3.0 提供丰富的配置参数,分为基本配置、池管理、超时控制、验证与监控、高级配置五类。以下为详细说明,包含默认值、推荐值及注意事项。

3.1 基本配置

用于设置数据库连接信息。

参数描述默认值推荐值注意事项
dataSourceClassNameJDBC 数据源类名,优先于 jdbcUrl视数据库(如 com.mysql.cj.jdbc.MysqlDataSourceSpring Boot 推荐用 jdbcUrl
jdbcUrl数据库连接 URL必填(如 jdbc:mysql://localhost:3306/testdb确保 URL 格式正确,MySQL 需设置 useSSL=false 等。
username数据库用户名必填确保权限足够。
password数据库密码必填使用环境变量或加密存储。
driverClassNameJDBC 驱动类名自动推断仅在无法自动加载驱动时设置。
catalog默认数据库目录视需求适用于 PostgreSQL 等数据库。
schema默认数据库模式视需求自 2.7.0 起支持。

3.2 池管理

控制连接池大小和生命周期。

参数描述默认值推荐值注意事项
maximumPoolSize最大连接池大小(含空闲和活跃连接)1010-20视数据库并发能力和应用负载调整。
minimumIdle最小空闲连接数maximumPoolSize 相同maximumPoolSize设为固定大小池提升性能。
poolName连接池名称(用于日志和监控)自动生成(如 HikariPool-1自定义(如 MyAppPool便于多数据源区分。

3.3 超时控制

管理连接获取和存活时间。

参数描述默认值推荐值注意事项
connectionTimeout获取连接最大等待时间(毫秒)30000 (30s)30000最低 250ms,过短可能导致超时。
idleTimeout空闲连接存活时间(毫秒)600000 (10m)120000 (2m)仅当 minimumIdle < maximumPoolSize 生效,最低 10000ms。
maxLifetime连接最大存活时间(毫秒)1800000 (30m)1800000小于数据库超时(如 MySQL wait_timeout),最低 30000ms。
keepaliveTime保持连接活跃的检查间隔(毫秒)120000 (2m)120000小于 maxLifetime 和数据库超时,最低 30000ms,6.3.0 增加 20% 方差。
initializationFailTimeout初始连接失败重试时间(毫秒)11000负值异步尝试,正值明确超时。

3.4 验证与监控

确保连接有效性并监控池状态。

参数描述默认值推荐值注意事项
connectionTestQuery连接测试查询SELECT 1仅旧驱动需设置,视数据库调整。
validationTimeout验证连接有效性最大时间(毫秒)50005000小于 connectionTimeout,最低 250ms。
leakDetectionThreshold连接泄漏检测阈值(毫秒)0 (禁用)60000 (1m)生产环境启用,最低 2000ms。
registerMbeans启用 JMX 监控falsetrue便于查看池状态(如活跃连接数)。

3.5 高级配置

用于特定场景和优化。

参数描述默认值推荐值注意事项
autoCommit是否自动提交truetrue事务管理由应用控制。
connectionInitSql连接初始化 SQL视需求(如 SET NAMES utf8谨慎使用,避免性能影响。
transactionIsolation事务隔离级别视需求(如 TRANSACTION_READ_COMMITTED使用数据库支持的级别。
readOnly是否为只读连接falsefalse适用于读写分离。
allowPoolSuspension是否允许暂停/恢复池falsefalse仅故障转移场景启用。
dataSourceProperties底层数据源额外属性视数据库(如 MySQL cachePrepStmts设置驱动特定优化。

3.6 6.3.0 新特性

  • 时间单位支持:支持 10ms20s30m 等格式。
  • Keepalive 方差keepaliveTime 检查间隔增加 20% 随机方差。
  • 数组属性:支持 String[]int[],优化 PostgreSQL 高可用配置。
  • 日志优化HikariPool.logPoolState() 格式更清晰。

四、HikariCP Keepalive 机制

HikariCP 的 keepaliveTime 参数通过应用层实现 TCP Keepalive 功能,定期检查空闲连接以防止数据库或网络超时导致的连接失效。

4.1 作用

  • 防止超时:应对数据库(如 MySQL wait_timeout)或网络设备(如防火墙)的空闲超时。
  • 检测失效连接:通过 isValid()connectionTestQuery 验证连接有效性。
  • 提高可靠性:快速重建失效连接,适合高可用性场景。

4.2 配置参数

参数描述默认值推荐值注意事项
keepaliveTime保持连接活跃的检查间隔(毫秒)120000 (2m)120000小于 maxLifetime 和数据库超时,最低 30000ms,6.3.0 增加 20% 方差。
关键特性
  • 默认启用:自 6.2.1 起默认 120000ms,设为 0 禁用。
  • 随机方差:6.3.0 中检查间隔增加 20% 方差(如 120s ± 24s),避免集中检查。
  • 检查机制:优先使用 isValid(),旧驱动使用 connectionTestQuery
  • maxLifetime 关系:推荐 keepaliveTimemaxLifetime 的 1/10 至 1/5。
配置示例
spring.datasource.hikari.keepalive-time=120000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-test-query=SELECT 1

4.3 与 Linux TCP Keepalive 的区别

特性HikariCP keepaliveTimeLinux TCP Keepalive
层级应用层(JVM 内部)操作系统(TCP 协议栈)
配置方式配置文件(如 application.properties/etc/sysctl.conf(需 root 权限)
灵活性针对每个数据源独立配置全局影响所有 TCP 连接
数据库适配支持自定义查询(如 SELECT 1仅检测 TCP 连通性
云环境友好性无需主机权限,适合容器化部署容器化环境修改复杂且不持久
默认值120000ms(2分钟)7200s(2小时,tcp_keepalive_time
为何无需修改 /etc/sysctl.conf
  • 灵活性keepaliveTime 针对数据库连接优化,支持自定义检查逻辑。
  • 默认值合理:120000ms 远小于数据库超时(如 MySQL wait_timeout=28800s)。
  • 云环境适配:无需主机权限,适合 Docker、Kubernetes、AWS RDS 等。
  • 隔离性:仅影响连接池,不干扰其他 TCP 连接。
何时需要 Linux TCP Keepalive?
  • 超短网络超时:防火墙超时 < 30s(如 10s),keepaliveTime 最小值 30000ms 不足。
  • 非数据库连接:其他 TCP 连接(如消息队列)需要 Keepalive。
  • 特殊要求:系统强制要求 TCP 层探测包。
Linux TCP Keepalive 配置示例
net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=2
net.ipv4.tcp_keepalive_probes=5

应用:sysctl -p

风险:全局影响、容器化不持久、需 root 权限,建议优先使用 keepaliveTime


五、使用 HikariCP

5.1 单独使用

Maven 依赖

<dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>6.3.0</version>
</dependency>

代码示例

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;public class HikariCPExample {public static void main(String[] args) {HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC");config.setUsername("root");config.setPassword("password");config.setMaximumPoolSize(15);config.setMinimumIdle(15);config.setKeepaliveTime(120000);config.addDataSourceProperty("cachePrepStmts", "true");try (HikariDataSource ds = new HikariDataSource(config);Connection conn = ds.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {while (rs.next()) {System.out.println("User: " + rs.getString("name"));}} catch (Exception e) {e.printStackTrace();}}
}

5.2 Spring Boot 集成

Maven 依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>9.2.0</version>
</dependency>

配置文件(application.yml)

spring:datasource:hikari:jdbc-url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTCusername: rootpassword: passwordmaximum-pool-size: 15minimum-idle: 15keepalive-time: 120000max-lifetime: 1800000connection-timeout: 30000leak-detection-threshold: 60000register-mbeans: truedata-source-properties:cachePrepStmts: trueuseServerPrepStmts: true

代码示例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;public void listUsers() {jdbcTemplate.query("SELECT * FROM users", (rs, rowNum) ->rs.getString("name")).forEach(System.out::println);}
}

六、优化与监控建议

6.1 配置优化

  1. 池大小
    • maximumPoolSize=15minimumIdle=15,创建固定大小池。
    • 根据数据库支持的并发连接数调整(通常 10-20)。
  2. 超时设置
    • connectionTimeout=30000(30s),避免过长等待。
    • maxLifetime=1800000(30m),小于数据库超时(如 MySQL wait_timeout)。
    • keepaliveTime=120000(2m),小于防火墙或数据库超时。
  3. 连接测试
    • 使用 connectionTestQuery=SELECT 1(旧驱动)或 isValid()(新驱动)。
  4. 泄漏检测
    • leakDetectionThreshold=60000(1m),生产环境启用。
  5. 数据库优化
    • MySQL:启用 cachePrepStmts=trueuseServerPrepStmts=true
    • PostgreSQL:协调 idle_in_transaction_session_timeout

6.2 监控与调优

  • JMX 监控:设置 registerMbeans=true,通过 JConsole 查看池状态。
  • 日志分析:启用 DEBUG 级别日志,检查失效连接和泄漏警告。
  • 性能测试:使用 JMH 基准测试不同配置效果。
  • Datadog 集成:监控 HikariCP 性能指标。

6.3 Keepalive 优化

  • 与数据库对齐
    • MySQL:SHOW VARIABLES LIKE 'wait_timeout';(通常 28800s)。
    • PostgreSQL:SHOW idle_in_transaction_session_timeout;
    • 设置 keepaliveTime 为数据库超时或防火墙超时的 1/2(如 120000ms)。
  • 避免过短间隔keepaliveTime < 30s 可能增加负载。
  • 验证效果:通过 JMX 监控失效连接移除频率,调整 keepaliveTime

七、完整配置文件示例

以下为 Spring Boot 3.x 的 MySQL 配置文件,包含推荐值和注释。

application.properties

spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=password
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=15
spring.datasource.hikari.pool-name=MyAppPool
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=120000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.keepalive-time=120000
spring.datasource.hikari.initialization-fail-timeout=1000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=5000
spring.datasource.hikari.leak-detection-threshold=60000
spring.datasource.hikari.register-mbeans=true
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.connection-init-sql=SET NAMES utf8mb4
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true

等效 YAML

spring:datasource:hikari:jdbc-url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTCusername: rootpassword: passwordmaximum-pool-size: 15minimum-idle: 15pool-name: MyAppPoolconnection-timeout: 30000idle-timeout: 120000max-lifetime: 1800000keepalive-time: 120000initialization-fail-timeout: 1000connection-test-query: SELECT 1validation-timeout: 5000leak-detection-threshold: 60000register-mbeans: trueauto-commit: trueconnection-init-sql: SET NAMES utf8mb4data-source-properties:cachePrepStmts: trueuseServerPrepStmts: true

八、注意事项

  1. 避免过大池maximumPoolSize 过大可能耗尽数据库资源,参考数据库最大连接数。
  2. 数据库宕机:HikariCP 自动移除失效连接,建议设置合理的 connectionTimeout 和重试机制。
  3. Keepalive 性能:过短的 keepaliveTime 增加数据库负载,推荐 120000ms。
  4. Linux TCP Keepalive
    • 仅在防火墙超时 < 30s 或非数据库连接需求时调整 /etc/sysctl.conf
    • 优先使用 HikariCP 的 keepaliveTime,避免全局影响。
  5. 安全性:密码等敏感信息通过环境变量管理。

九、参考资源

  • 官方文档:https://github.com/brettwooldridge/HikariCP
  • 配置说明:https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
  • Spring Boot 教程:https://www.baeldung.com/spring-boot-hikari
  • MySQL 超时:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
  • PostgreSQL 超时:https://www.postgresql.org/docs/current/runtime-config-connection.html

十、总结

HikariCP 6.3.0 以其高性能、轻量级和易用性成为 Java 连接池的首选。keepaliveTime(默认 120000ms)通过应用层健康检查有效防止连接超时,无需修改 Linux TCP Keepalive 参数(如 /etc/sysctl.conf)。开发者应根据数据库超时(如 MySQL wait_timeout)和网络环境优化配置,结合 JMX 监控确保性能和稳定性。在云原生和容器化场景中,HikariCP 的灵活性尤为突出,是现代 Java 应用的理想选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue的摄影师分享交流社区的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

ComfyUI for Windwos与 Stable Diffusion WebUI 模型共享修复

#工作记录 虽然在安装ComfyUI for Windwos时已经配置过extra_model_paths.yaml 文件&#xff0c;但升级ComfyUI for Windwos到最新版本后发现原先的模型配置失效了&#xff0c;排查后发现&#xff0c;原来是 extra_model_paths.yaml 文件在新版本中被移动到了C盘目录下&#x…

【最新版】沃德代驾源码全开源+前端uniapp

一.系统介绍 基于ThinkPHPUniapp开发的代驾软件。系统源码全开源&#xff0c;代驾软件的主要功能包括预约代驾、在线抢单、一键定位、在线支付、车主登记和代驾司机实名登记等‌。用户可以通过小程序预约代驾服务&#xff0c;系统会估算代驾价格并推送附近代驾司机供用户选择&…

react的 Fiber 节点的链表存储

在React Fiber架构中&#xff0c;Fiber节点的链表存储是一种重要的数据结构组织方式&#xff0c;用于管理和遍历Fiber节点。以下是关于Fiber节点链表存储的详细介绍&#xff1a; 链表结构 单链表&#xff1a;React Fiber节点通过next指针形成单链表结构。每个Fiber节点都有一…

Kafka + Kafka-UI

文章目录 前言&#x1f433; 一、使用纯 Kafka Kafka-UI &#xff08;无 Zookeeper&#xff09;Docker 配置&#x1f680; 启动步骤✅ 服务启动后地址&#x1f525; 注意事项&#xff08;使用 Kraft&#xff09;✅ NestJS Kafka 连接不变&#x1f9e0; 额外补充&#x1f4e6; …

AI声像融合守护幼儿安全——打骂/异常声音报警系统的智慧防护

幼儿园是孩子们快乐成长的摇篮&#xff0c;但打骂、哭闹或尖叫等异常事件可能打破这份宁静&#xff0c;威胁幼儿的身心安全。打骂/异常声音报警系统&#xff0c;依托尖端的AI声像融合技术&#xff0c;结合语音识别、情绪分析与视频行为检测&#xff0c;为幼儿园筑起一道智能安全…

Qt网络数据解析方法总结

在Qt中解析网络数据通常涉及接收原始字节流&#xff0c;并将其转换为有意义的应用层数据。以下是详细步骤和示例&#xff1a; 1. 网络数据接收 使用QTcpSocket或QUdpSocket接收数据&#xff0c;通过readyRead()信号触发读取&#xff1a; // 创建TCP Socket并连接信号 QTcpSo…

unity编辑器的json验证及格式化

UNITY编辑器的json格式化和验证工具资源-CSDN文库https://download.csdn.net/download/qq_38655924/90676188?spm1001.2014.3001.5501 反复去别的网站验证json太麻烦了 用这个工具能方便点 # Unity JSON工具 这是一个Unity编辑器扩展&#xff0c;用于验证、格式化和压缩JSO…

学习笔记:Qlib 量化投资平台框架 — FIRST STEPS

学习笔记&#xff1a;Qlib 量化投资平台框架 — FIRST STEPS Qlib 是微软亚洲研究院开源的一个面向人工智能的量化投资平台&#xff0c;旨在实现人工智能技术在量化投资中的潜力&#xff0c;赋能研究&#xff0c;并创造价值&#xff0c;从探索想法到实施生产。Qlib 支持多种机器…

操作系统:计算机世界的基石与演进

一、操作系统的本质与核心功能 操作系统如同计算机系统的"总管家"&#xff0c;在硬件与应用之间架起关键桥梁。从不同视角观察&#xff0c;其核心功能呈现多维价值&#xff1a; 硬件视角的双重使命&#xff1a; 硬件管理者&#xff1a;通过内存管理、进程调度和设…

基于单片机的温湿度采集系统(论文+源码)

2.1系统的功能 本系统的研制主要包括以下几项功能&#xff1a; (1)温度检测功能&#xff1a;对所处环境的温度进行检测&#xff1b; (2)湿度检测功能&#xff1a;对所处环境的湿度进行检测&#xff1b; (3)加热和制冷功能&#xff1a;可以完成加热和制冷功能。 (4)加湿和除…

webrtc使用

demo https://www.webrtc-experiment.com/ github开源demo https://github.com/muaz-khan/WebRTC-Experiment.git ws传递webrtc信令,本机不需要stun服务器,远端电脑需要ice服务器建立peer连接 const WebSocket = require(ws); const express =

【数据可视化-25】时尚零售销售数据集的机器学习可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…

Python Cookbook-6.11 缓存环的实现

任务 你想定义一个固定尺寸的缓存&#xff0c;当它被填满时&#xff0c;新加入的元素会覆盖第一个(最老的)元素。这种数据结构在存储日志和历史信息时非常有用。 解决方案 当缓存填满时&#xff0c;本节解决方案及时地修改了缓存对象&#xff0c;使其从未填满的缓存类变成了…

OpenCv高阶(九)——背景建模

目录 一、背景建模的核心目标与核心挑战 1. 核心目标 2. 核心挑战 ​二、背景建模模型 1、帧差法原理 2. 概率模型&#xff08;Parametric Models&#xff09; &#xff08;1&#xff09;高斯混合模型&#xff08;Gaussian Mixture Model, GMM&#xff09; &#xff08;…

小重构,大收益!技术重构实践:如何优雅升级老旧接口

重构格言&#xff1a;"优秀系统不是设计出来的&#xff0c;而是通过持续重构演进而来的。" —— Martin Fowler《重构&#xff1a;改善既有代码的设计》 希望本文能为您的重构之旅提供指引&#xff0c;让老旧系统焕发新生&#xff01; 一、背景&#xff1a;一个“稳定…

OSPF中DR/BDR的选举

OSPF 开放式最短路径优先协议-CSDN博客 选举原因&#xff1a;广播网络中使路由信息交换更加高速有序&#xff0c;可以降低需要维护的邻接关系数量 基本概念&#xff1a; DR (Designated Router, 指定路由器)&#xff1a;负责在广播网络&#xff08;以太网&#xff09;或NBMA网…

[特殊字符]‍[特殊字符]Linux驱动开发入门 | 并发与互斥机制详解

文章目录 &#x1f468;‍&#x1f4bb;Linux驱动开发入门 | 并发与互斥机制详解&#x1f4cc;为什么驱动中需要并发和互斥控制&#xff1f;&#x1f4a1;常见的并发控制机制&#x1f510;自旋锁和信号量通俗理解&#x1f300;自旋锁&#xff08;Spinlock&#xff09;——“厕所…

Kafka 架构设计和组件介绍

什么是Apache Kafka&#xff1f; Apache Kafka 是一个强大的开源分布式事件流平台。它最初由 LinkedIn 开发&#xff0c;最初是一个消息队列&#xff0c;后来发展成为处理各种场景数据流的工具。 Kafka 的分布式系统架构支持水平扩展&#xff0c;使消费者能够按照自己的节奏检…

elk中kibana一直处于可用和降级之间且es群集状态并没有问题的解决方法

前言 在公司部elk的时候发现kibana的web界面一直很卡&#xff0c;数据量为0也会很卡&#xff0c;es群集状态正常&#xff0c;资源足够。 报错信息 [2025-03-17T09:54:50.19400:00][INFO ][status] Kibana is now available (was degraded) [2025-03-17T09:55:03.28000:00][I…