数据库连接池配置
面试官问:"数据库连接池怎么配置?"
小张说:"设置最大连接数大一点就行了。"
面试官追问:"连接数太大或太小有什么问题?"
小张说:"太小会排队等待,太大...资源不够?"
面试官继续追问:"那 MySQL 的 max_connections 是多少?连接数和 QPS 是什么关系?"
小张开始答不上来。
连接池是 MySQL 应用架构中最容易被忽视的组件。配置不合理会导致连接耗尽、线程数过多、或者资源浪费。这道题考的是候选人对数据库连接资源管理的理解深度。
一、连接池的核心概念 🔴
1.1 连接池的作用
1.2 连接池 vs 裸连接
1.3 MySQL 连接的限制
二、核心配置参数 🔴
2.1 连接池核心参数
2.2 连接数配置计算
2.3 连接数过大的问题
2.4 ❌ 错误示范
候选人原话:"max_connections 设成 10000,够用。"
问题诊断:MySQL 单线程处理连接,连接数过多会导致:
- 上下文切换开销大
- 每个连接占用内存(默认 256KB/连接)
- 10000 连接 = 2.5GB 内存开销
候选人原话 2:"连接池越大越好。"
问题诊断:连接数过大会导致资源争用。每个连接都要占用 CPU 和内存,连接太多反而降低吞吐量。
【面试官心理】 这道题我会从实际配置问题切入。如果候选人能说清楚连接数和 QPS 的关系、连接超时设置、以及连接泄漏的排查方法,说明他有生产经验。
三、连接池调优 🟡
3.1 HikariCP 推荐配置
3.2 Druid 连接池配置
3.3 连接超时设置
四、生产避坑 🟡
4.1 连接泄漏
4.2 慢查询占用连接
4.3 监控告警
【面试官心理】 连接池配置的候选人里,能说出连接泄漏问题和慢查询占用连接的是少数。真正有生产经验的候选人,应该能说出"为什么要设置 maxLifetime"、"连接超时怎么设置"的实际原因。