新增 6 个知识库文档,用于测试 L0+L1 混合检索功能: API 类: - payment-errors.md - 支付网关错误码定义 领域知识类: - spring-ai-tool-best-practices.md - Spring AI 工具定义最佳实践 基础设施类: - redis-config.md - Redis 缓存配置指南 - mysql-connection-pool.md - MySQL 连接池配置 - flyway-best-practices.md - Flyway 数据库迁移最佳实践 故障排查类: - fault-diagnosis-process.md - 故障诊断流程规范 所有文档均包含: - 标准 frontmatter 元数据 (title, keywords, summary, category) - 实用配置示例和代码片段 - 支持 L0 精确匹配的关键词
2.2 KiB
2.2 KiB
title, keywords, summary, category
| title | keywords | summary | category | |||||
|---|---|---|---|---|---|---|---|---|
| MySQL 数据库连接池配置 |
|
MySQL 连接池的配置参数、性能调优和故障排查指南 | infrastructure |
MySQL 数据库连接池配置
HikariCP 配置
基础配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/superbiz_agent?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 10
minimum-idle: 5
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
关键参数说明
maximum-pool-size
- 默认值:10
- 建议值:根据并发量调整
- 公式:connections = ((core_count * 2) + effective_spindle_count)
- 注意:不是越大越好,过大会增加数据库负担
connection-timeout
- 默认值:30000ms (30秒)
- 说明:等待连接的最大时间
- 建议:根据业务超时要求调整
idle-timeout
- 默认值:600000ms (10分钟)
- 说明:连接空闲多久后被释放
- 建议:小于 MySQL wait_timeout
常见问题
连接泄漏
症状:
- 应用无法获取数据库连接
- 日志显示 "Connection is not available"
排查:
// 检查是否有未关闭的连接
try (Connection conn = dataSource.getConnection()) {
// 使用连接
} // 自动关闭
解决:
- 使用 try-with-resources
- 检查事务是否正常提交/回滚
wait_timeout 超时
症状:MySQL 错误 "The last packet successfully received from the server was X milliseconds ago"
排查:
SHOW VARIABLES LIKE 'wait_timeout';
解决:
hikari:
max-lifetime: 1800000 # 小于 MySQL wait_timeout
性能监控
HikariCP 指标
HikariPoolMXBean poolMXBean = hikariDataSource.getHikariPoolMXBean();
int active = poolMXBean.getActiveConnections();
int idle = poolMXBean.getIdleConnections();
int total = poolMXBean.getTotalConnections();
慢查询监控
-- 开启慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
-- 查看慢查询
SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;