
1) 【一句话结论】在高并发场景下,通过性能分析定位到数据库查询是瓶颈,添加索引后响应时间降低50%,CPU利用率从80%降至20%。
2) 【原理/概念讲解】高并发时系统资源(CPU、内存、数据库I/O)被大量请求占用,导致响应变慢。性能瓶颈定位需先通过监控工具(如Prometheus看CPU利用率、数据库慢查询日志)找到瓶颈点,比如CPU飙升说明计算密集,I/O高说明数据库或网络问题。性能分析工具的作用是帮助快速定位瓶颈,比如JProfiler可分析代码执行时间,Prometheus+Grafana可监控系统指标。
3) 【对比与适用场景】
| 方法 | 定义 | 作用 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 缓存(如Redis) | 内存中存储热点数据 | 减少数据库访问,提升读取速度 | 高频读低频写场景(如搜索结果、用户信息) | 需考虑缓存击穿(热点key失效)、雪崩(大量key失效)、过期策略 |
| 数据库索引(如B+树) | 数据库表中的结构,加速查询 | 提升复杂查询效率(如多条件过滤、关联查询) | 查询条件多、关联表多的场景(如电商搜索、订单查询) | 索引过多会降低写性能(插入/更新/删除变慢) |
4) 【示例】假设项目是“电商平台搜索服务”,用户搜索商品时,高并发下响应时间从200ms升至2秒。通过Prometheus监控发现数据库查询占CPU 80%,定位到商品表(products)的搜索字段(search_keyword)无索引。优化措施:添加B+树索引(CREATE INDEX idx_search_keyword ON products(search_keyword)),并调整缓存策略(将搜索结果缓存到Redis,TTL=30s)。优化后,响应时间恢复到150ms以下,CPU利用率降至20%。
5) 【面试口播版答案】我之前参与过一个电商平台的搜索服务项目,在高并发测试时发现响应时间从200ms飙升至2秒,通过Prometheus监控发现数据库查询占CPU 80%,定位到是商品表(products)的搜索字段(search_keyword)没有索引。优化措施是添加B+树索引,并调整缓存策略(将搜索结果缓存到Redis,TTL设为30秒)。优化后,响应时间恢复到150ms以下,CPU利用率降至20%以下。
6) 【追问清单】
7) 【常见坑/雷区】