性能测试是一项综合性的工作,实质是利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决;为后续的扩展提供参考。一般来说性能测试介入的时机是在功能测试完成之后。

性能测试的首要目标确认需求,由产品、架构师、开发、测试一起讨论决定,可以从新系统和旧系统两种系统来考虑:

  • 新系统

产品、架构师在前期需求调研时,预估出可能造成大并发的点(大量用户同时请求,大量计算型任务、频繁操作数据库等场景);

  • 旧系统

(1)根据生产环境日志(ELK),统计高频访问接口TPS,以此确定对应的业务场景和性能指标;
(2)线上曾经出现过性能问题的点,可作为参考;
(3)大型活动,例如抢红包、秒杀、直播等活动;
(4)经验,功能逻辑服务,响应时间较长的点。

基础架构

大型网站架构技术的核心不是从无到有搭建一个大型系统,而是能够伴随小型系统业务的逐步发展,慢慢地演化成一个大型系统。考虑系统的性能,除了要考虑单台服务器的性能,可扩展性也是一个重要考虑因素。例如下图一个分布式系统架构:

架构符合性测试报告 测试架构的目的_性能测试

CDN服务器:放在网络服务商机房,使用户通过最短访问路径获取数据,一般存放静态资源文件。(第一次预演有业务方未放静态资源文件到CDN服务器)
反向代理服务器:传统代理服务器位于浏览器侧,代理浏览器将HTTP请求发送到互联网上;而方向代理服务器位于网站服务器机房一侧,代理网站服务器接受HTTP请求。两个优点:(1)安全,隐藏服务器地址,免受攻击;(2)缓存,缓存热点数据,加快响应速度,减轻服务器负载压力。

应用服务器:分布式集群,可扩展性,共同对外提供服务,提高整体处理能力,改善性能。
数据库、缓存服务器:分布式主从架构;对于非结构化的数据,存储在NoSQL数据库来提升性能;重要数据仍需要关系型数据库(如MySQL),分库分表提高性能。
遵循原则:
(1) 利用CDN加速系统响应
(2) 独立部署,避免不同系统间的资源竞争(比如CPU、内存、磁盘等)
(3) 数据库实施读/写分离,查询操作尽可能命中缓存
(4) 业务垂直化,降低耦合,从而实现分而治之的管理
(5) 大流量限流/消峰
(6) 异步调用—MQ实现系统间的解耦