1. 短链跳转性能
目标:跳转延迟 ≤ 50ms(内网环境),单节点 QPS ≥ 5k。
测试点:
- 单用户访问短链 → 响应时间统计(首字节、总耗时)。
- 并发 100/1000/5000 用户同时访问同一短链。
- 并发 100/1000/5000 用户同时访问不同短链(随机)。
- Redis 缓存命中时延迟统计 vs 未命中时延迟统计。
预期结果:
- P95 响应时间 ≤ 100ms
- 缓存命中率 ≥ 90%
2. 短链生成性能
目标:单节点短链生成接口 QPS ≥ 500,平均延迟 ≤ 200ms。
测试点:
- 单用户连续生成短链(长链随机)。
- 并发 100/1000 用户生成短链。
- 自定义短码场景并发(冲突检测性能)。
预期结果:
- P95 响应时间 ≤ 300ms
- 短码冲突率 ≈ 0
3. 数据库性能
目标:写入性能可支撑 ≥ 10w 条短链/天。
测试点:
- 批量插入长链(1w、10w)。
- 批量查询短链(分页、模糊搜索)。
- 统计聚合查询性能(按日统计 PV/UV)。
预期结果:
- 写入 TPS ≥ 2000/s
- 分页查询延迟 ≤ 500ms
- 聚合统计延迟 ≤ 2s
4. 统计系统性能
目标:支持百万级点击日志写入,统计延迟 ≤ 5s。
测试点:
- 并发 1000 用户持续访问短链,检查统计落库延迟。
- Kafka /消息队列消费速率测试(若采用异步采集)。
- PV/UV 精确度验证(HyperLogLog 误差 < 1%)。
预期结果:
- 统计落库延迟 ≤ 5s
- 聚合结果与实际误差 ≤ 1%
5. API 限流与高并发
目标:API 限流准确,防止滥用。
测试点:
- 单用户高频调用
shorten API(> 100 req/min)。 - 多用户同时调用,确保不同用户限流隔离。
- API Key 过期后继续调用。
- 单用户高频调用
预期结果:
- 超限请求返回
130003(API 调用超限)。 - 未超限用户不受影响。
- 超限请求返回
6. 缓存 & 容灾
目标:保证高可用,即使缓存/数据库部分不可用。
测试点:
- 短链访问时手动清空 Redis,验证回源 DB 成功率。
- 短链访问时模拟 DB 挂掉,验证错误返回(100003)。
- Redis 恢复后命中率回升情况。
预期结果:
- Redis 不可用时,短链依然可访问(回源 DB)。
- DB 不可用时,短链访问失败,返回「系统开小差了」。
7. 压力/稳定性测试
目标:长时间运行不崩溃,不内存泄漏。
测试点:
- 持续 24 小时压测(模拟 1000 QPS 短链访问)。
- 内存占用曲线 → 平稳,不无限增长。
- CPU 占用率 ≤ 70%。
预期结果:
- 服务稳定可用,无异常重启。
- 平均延迟保持在指标范围内。
8. 前端性能
目标:用户体验流畅,页面交互延迟可接受。
测试点:
- 首页短链生成响应时间 ≤ 1s。
- Dashboard 列表加载延迟 ≤ 1s。
- 图表渲染时间 ≤ 2s(数据量 ≤ 1w 条)。
预期结果:
- 前端页面交互流畅,图表渲染不卡顿。
工具
- 接口压测:JMeter / Locust / k6
- 服务监控:Prometheus + Grafana (延迟、QPS、错误率)
- 日志采集:ELK / Loki
- 数据库观测:慢查询日志、性能 Schema
9. 容量规划与扩容策略
| 规模阶段 | 数据量 | QPS | 架构调整 |
|---|---|---|---|
| 起步 | < 100万 | < 1k | 单节点 + Redis |
| 成长 | 100万-1000万 | 1k-10k | 读写分离 + CDN |
| 扩展 | 1000万-1亿 | 10k-50k | 分库分表 + 多级缓存 |
| 大规模 | > 1亿 | > 50k | 全球多活 + 边缘节点 |
容量预估公式:
所需 Redis 内存 = 活跃短链数 × (短码长度 + 目标 URL 平均长度 + 元数据)
≈ 1000万 × 200B ≈ 2GB
所需数据库存储 = 总短链数 × 单条记录大小 × 副本因子
≈ 1亿 × 500B × 2 = 100GB
10. 监控告警清单
| 告警项 | 条件 | 级别 | 响应 |
|---|---|---|---|
| P95 延迟突增 | > 基线 200% | P1 | 立即排查 |
| 错误率上升 | > 1% | P1 | 立即排查 |
| QPS 接近上限 | > 80% 容量 | P2 | 准备扩容 |
| 缓存命中率下降 | < 85% | P2 | 检查热 key |
| 数据库慢查询 | > 1s | P2 | 索引优化 |
| 内存使用增长 | 周环比 > 30% | P3 | 排期优化 |
📌 这样一份 性能测试点清单,可以覆盖短网址服务的非功能需求:
- 跳转延迟
- 短链生成效率
- 数据库读写性能
- 统计准确性
- 限流/容灾机制
- 长时间稳定性
- 容量规划与扩容
- 监控告警体系
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。