Shopify 报告称,2024 年黑色星期五/网络星期一期间,商家总共实现了 93 亿美元的销售额,而这 96 小时内的每一分钟停机都会造成数千美元的收入损失。 负载测试是在高峰流量期间平稳扩展的平台与在最糟糕的时刻崩溃的平台之间的区别。然而,大多数企业是在实际活动中而不是在测试过程中发现其平台的突破点。
属于我们的性能与可扩展性系列
阅读完整指南Shopify 报告称,2024 年黑色星期五/网络星期一期间,商家总共实现了 93 亿美元的销售额,而这 96 小时内的每一分钟停机都会造成数千美元的收入损失。 负载测试是在高峰流量期间平稳扩展的平台与在最糟糕的时刻崩溃的平台之间的区别。然而,大多数企业是在实际活动中而不是在测试过程中发现其平台的突破点。
要点
- 使用实际流量模式进行负载测试,而不仅仅是原始请求计数 - 对从浏览到结帐的实际用户旅程进行建模
- 在高峰事件发生前 8-12 周开始负载测试,为基础设施变更和代码优化留出时间
- 逐步识别瓶颈:从基线上升到 2 倍预期峰值,独立测试每一层
- 测试后分析与测试本身一样重要 - 将响应时间与基础设施指标相关联以找到真正的约束
负载测试工具比较
选择正确的负载测试工具取决于您团队的技术技能、基础设施和测试要求。
| 工具 | 语言 | 协议支持 | 脚本 | 云执行 | 最适合 |
|---|---|---|---|---|---|
| k6(格拉法纳) | JavaScript | HTTP、WebSocket、gRPC | JavaScript ES6 | Grafana 云、k6 云 | 开发人员友好的 CI/CD 集成 |
| 火炮 | JavaScript | HTTP、WebSocket、Socket.io | YAML + JavaScript | 炮云 | 快速设置、基于 YAML 的场景 |
| 蝗虫 | 蟒蛇 | HTTP(可扩展) | 蟒蛇 | 分布式模式 | Python团队,复杂场景 |
| JMeter | 爪哇 | HTTP、JDBC、FTP、LDAP | 图形用户界面 + XML | BlazeMeter、OctoPerf | 遗留系统、协议多样性 |
| 加特林 | 斯卡拉 | HTTP、WebSocket | Scala DSL | 加特林企业 | 高性能、详细的报告 |
| 剧作家(负载) | JavaScript | 完整浏览器 | JavaScript | CI 跑步者 | 测试 JavaScript 密集型 SPA |
k6:推荐给大多数团队
k6 是我们推荐用于大多数电子商务负载测试的工具。它使用 JavaScript 进行测试脚本,与 CI/CD 管道集成,并生成详细的指标,包括响应时间百分位数、吞吐量和错误率。它在本地或云端运行,其输出与 Grafana 仪表板集成以进行实时监控。
k6 测试定义执行场景的虚拟用户 (VU)——模拟用户行为的 HTTP 请求序列。每个 VU 维护自己的会话状态(cookie、标头),从而实现真实的身份验证工作流程。
火炮:最适合快速设置
Artillery 对常见场景使用基于 YAML 的配置,并支持 JavaScript 来实现复杂逻辑。它擅长快速启动负载测试,您需要在几分钟内获得结果,而不是编写几个小时的脚本。它还对 Socket.io 和 WebSocket 测试提供本机支持。
模拟真实的流量模式
负载测试中最大的错误是发送与真实用户行为不匹配的统一流量。真实流量具有暴露不同瓶颈的特定模式。
用户旅程建模
电子商务负载测试应该对完整的用户旅程进行建模,而不仅仅是单个端点点击。实际测试包括以下具有适当比例的用户类型:
| 用户类型 | 流量分享 | 旅程 |
|---|---|---|
| 浏览器 | 60-70% | 主页、类别页面、产品页面、搜索 |
| 比较购物者 | 15-20% | 产品页面、添加到购物车、查看购物车、离开 |
| 买家 | 8-12% | 浏览、添加到购物车、结帐、付款 |
| 回头客 | 5-10% | 登录、订单历史、重新订购、结帐 |
| API 集成 | 2-5% | 库存同步、订单导出、webhook 处理 |
交通匝道模式
不要直接跳至峰值负载。逐渐斜坡以确定突破点。
黑色星期五测试的斜坡上升模式:
- 基线(0-10分钟) -- 从正常的每日流量开始建立性能基线
- 到达预期高峰(10-30 分钟) -- 逐渐增加至预期黑色星期五流量
- 维持峰值(30-60分钟) -- 维持峰值负载以测试持续的性能和资源泄漏
- 峰值测试(60-70 分钟) -- 模拟闪购开始,30 秒内流量峰值达到 3-5 倍
- 恢复(70-80分钟)——恢复正常负载并验证系统恢复,无需人工干预
- 浸泡测试(单独运行,4-8小时) -- 持续中等负载以检测内存泄漏和连接池耗尽
思考时间和节奏
真实用户不会尽快发出请求。他们阅读内容、比较产品并填写表格。包括请求之间的实际思考时间:
- 页面浏览间隔:5-30 秒
- 填写结帐表格:30-120 秒
- 阅读产品说明:10-60秒
- 搜索和过滤:操作之间间隔 3-10 秒
如果没有思考时间,您的测试会生成不切实际的集中负载,与生产流量模式不匹配。
瓶颈识别
负载测试揭示了瓶颈,但您需要知道在哪里寻找。监控基础设施指标和测试结果,将响应时间下降与资源耗尽关联起来。
数据库瓶颈
症状: 响应时间随负载线性增加,数据库 CPU 超过 90%,慢速查询日志快速填满
常见原因:
- 经常查询的列上缺少索引
- N+1 查询与并发用户数成倍增加
- 结帐期间锁定库存更新争用
- 连接池耗尽(所有连接正在使用,新请求队列)
诊断: 监视 pg_stat_activity 的活动查询、pg_stat_user_tables 的顺序扫描计数以及连接池指标。请参阅我们有关数据库查询优化 的详细指南。
应用服务器瓶颈
症状: CPU 峰值达到 100%,事件循环延迟增加 (Node.js),垃圾收集暂停导致延迟峰值
常见原因:
- 同步操作阻塞事件循环(图像处理、PDF生成)
- 内存泄漏导致垃圾收集越来越频繁
- 用于 CPU 密集型操作的工作进程不足
- 缺少昂贵计算的缓存
诊断: 监控每个应用程序实例的 CPU、内存、事件循环延迟和垃圾收集指标。
网络和基础设施瓶颈
症状: 带宽饱和、连接超时、负载下 SSL 握手延迟
常见原因:
- 未压缩的响应消耗带宽
- 静态资产由应用程序服务器而不是 CDN 提供
- SSL/TLS 在应用程序服务器上终止,而不是在负载均衡器上终止
- 服务器实例类型的网络带宽不足
容量规划
负载测试可纳入容量规划——确定峰值事件所需的基础设施数量。
容量规划公式
- 确定高峰流量预期——使用去年的数据加上增长预测。如果这是您的第一次重大销售,请根据营销范围和行业基准进行估算
- 增加安全裕度 -- 计划 2-3 倍的预期峰值来处理意外的病毒流量
- 以目标容量运行负载测试 -- 验证您的基础设施能够以可接受的响应时间处理 2-3 倍的峰值
- 计算成本 -- 确定峰值容量的基础设施成本,并确定自动扩展或预配置是否更具成本效益
预扩展检查表
在活动前 8-12 周开始准备:
| 时间轴 | 行动 |
|---|---|
| 8-12 周前 | 运行基线负载测试,确定前 5 个瓶颈 |
| 6-8 周前 | 实施优化(缓存、查询修复、代码更改) |
| 4-6 周前 | 在预期峰值运行负载测试,验证改进 |
| 2-4 周前 | 以 2-3 倍峰值运行负载测试,规划基础设施扩展 |
| 1 周前 | 预扩展基础设施,运行最终验证测试 |
| 活动当天 | 监控仪表板,准备好回滚计划 |
自动缩放与预配置
自动扩展会根据需求指标调整容量,但添加新实例需要 3-10 分钟。对于突然的流量高峰(闪购开始、病毒式社交媒体帖子),预先配置可以避免延迟。
推荐方法: 预先配置以处理预期峰值,配置自动扩展以应对超出预先配置容量的意外激增。
测试后分析
负载测试本身只是该值的一半。测试后分析将原始数据转化为可操作的优化优先级。
要分析的关键指标
| 公制 | 寻找什么 |
|---|---|
| P95 响应时间 | 峰值负载时应保持在 500 毫秒以下 |
| P99 响应时间 | 应保持在 2 秒以下——尾部延迟会影响最活跃的用户 |
| 错误率 | 应保持在 0.1% 以下——任何更高的值都表明容量问题 |
| 吞吐量上限 | 响应时间开始下降的每秒请求数 |
| 恢复时间 | 峰值后响应时间恢复正常的速度有多快? |
| 资源利用 | CPU、内存、峰值连接——哪个先达到上限? |
制定行动计划
按业务影响对调查结果进行优先级排序:
- 峰值错误 - 任何在负载下返回 5xx 的请求都必须修复。这些都是销售损失。
- 结帐性能 -- 如果结帐响应时间超过2秒,请首先优化该路径。结账速度慢直接影响转化。
- 搜索和浏览性能 - 缓慢的产品发现会减少查看的项目和购物车的大小。
- 管理和后台——这些在高峰期间可能会降级,但不会影响收入。如有必要,降低优先级。
常见问题
如果我不控制基础设施,如何对 Shopify 商店进行负载测试?
专注于您控制的内容:您的自定义主题代码、第三方应用程序和外部集成。使用 Lighthouse CI 等工具进行前端性能测试。在负载下测试您的 Webhook 处理端点和库存同步 API。对于 Shopify Plus 商家,请与 Shopify 的商家成功团队合作来审查特定商店的容量。
负载测试和压力测试有什么区别?
负载测试验证您的系统是否能够以可接受的性能处理预期的峰值流量。压力测试超越了预期的限制,以找到断点并验证优雅的降级。负载测试为已知事件做准备;压力测试以发现未知限制并确保系统安全失败而不是灾难性失败。
我应该在生产环境还是登台环境中进行负载测试?
在尽可能反映生产的环境中进行测试。登台环境通常具有较小的数据库、较少的服务器和不同的网络配置。如果可能,请在低流量时段针对生产基础设施运行负载测试。至少,在临时数据库中使用生产规模的数据。
如何在负载测试中模拟真实的支付处理?
使用接受测试卡号的支付提供商沙箱/测试模式。 Stripe、PayPal 和其他提供商提供了无需真实银行卡即可处理交易的测试环境。测试完整的结账流程,包括支付 API 调用,以识别集成瓶颈。监控支付提供商的速率限制——一些提供商以不同于生产的方式限制沙箱请求。
我应该多久运行一次负载测试?
在任何重大流量事件(黑色星期五、产品发布、营销活动)之前运行全面的负载测试。作为 CI/CD 的一部分,每周或在重大代码更改后运行自动化的较小负载测试。在部署清单中包含负载测试,以检查影响高流量端点的更改。
下一步是什么
首先针对当前生产流量模式进行基线负载测试。在运行下一个测试之前,确定最重要的三个瓶颈并对其进行优化。重复此循环,直到您的平台能够轻松处理 2-3 倍的预期峰值流量,并且响应时间低于 500 毫秒。
对于更广泛的性能工程背景,请参阅我们关于扩展您的业务平台 的支柱指南。要优化负载测试所压力的基础架构,请阅读我们的基础架构扩展和负载平衡 指南。
ECOSIRE 为 Shopify 和 Odoo 上的电子商务平台提供负载测试和性能优化。 联系我们的团队 进行活动前的表演准备。
由 ECOSIRE 发布 — 通过 Odoo ERP、Shopify 电子商务 和 OpenClaw AI 等人工智能驱动的解决方案帮助企业扩展规模。
作者
ECOSIRE Team技术写作
ECOSIRE 技术写作团队的内容涵盖 Odoo ERP、Shopify 电子商务、AI 智能体、Power BI 分析、GoHighLevel 自动化以及企业软件最佳实践。我们的指南帮助企业做出明智的技术决策。
相关文章
电子商务的人工智能内容生成:产品描述、SEO 等
利用 AI 扩展电子商务内容:产品描述、SEO 元标签、电子邮件副本和社交媒体。质量控制框架和品牌声音一致性指南。
人工智能驱动的动态定价:实时优化收入
实施人工智能动态定价,通过需求弹性模型、竞争对手监控和道德定价策略来优化收入。架构和投资回报率指南。
电子商务人工智能欺诈检测:在不阻止销售的情况下保护收入
实施 AI 欺诈检测,捕获 95% 以上的欺诈交易,同时将误报率控制在 2% 以下。机器学习评分、行为分析和投资回报率指南。
更多来自性能与可扩展性
Webhook 调试和监控:完整的故障排除指南
通过这份涵盖故障模式、调试工具、重试策略、监控仪表板和安全最佳实践的完整指南掌握 Webhook 调试。
k6 负载测试:在发布之前对您的 API 进行压力测试
掌握 Node.js API 的 k6 负载测试。涵盖虚拟用户启动、阈值、场景、HTTP/2、WebSocket 测试、Grafana 仪表板和 CI 集成模式。
Nginx 生产配置:SSL、缓存和安全性
Nginx 生产配置指南:SSL 终止、HTTP/2、缓存标头、安全标头、速率限制、反向代理设置和 Cloudflare 集成模式。
Odoo 性能调优:PostgreSQL 和服务器优化
Odoo 19 性能调优专家指南。涵盖 PostgreSQL 配置、索引、查询优化、Nginx 缓存和企业部署的服务器大小调整。
在生产中测试和监控 AI 代理
在生产环境中测试和监控 AI 代理的完整指南。涵盖 OpenClaw 部署的评估框架、可观测性、漂移检测和事件响应。
使用 OpenClaw 进行合规性监控代理
部署 OpenClaw AI 代理以进行持续合规性监控。自动执行监管检查、策略执行、审计跟踪生成和合规性报告。