一、APP故障

  1、业务故障现象: APP中直播带货时,页面加载不出,APP不能正常访问。

  2、紧急排查:查询后台并发连接数1000左右,并不算高。查询mongodb CPU 已接近100%,查询发现存在大量慢查询日志。

  3、紧急处理:db.xy_contentPV.createIndex({"docid": 1}, {background: true});添加该索引后CPU逐渐下降。

  4、附故障时负载均衡连接数、mongdb CPU、慢查询日志 等截图。

      记一次某APP后台接口并发优化案例_第1张图片


二、平台架构图

 1、原架构图

    记一次某APP后台接口并发优化案例_第2张图片

  2、调整后,架构不变、增加物理硬件设备

    (1) toc接口配置由2台4C8G增加到5台8C16G(toc接口:直接面向用户的相关接口)

    (2)nginx代理由2台4C4G增加到6台8C8G服务器(接口添加nginx缓存后,大量并直接由nginx承受)


三、并发优化

  1. mongodb慢查询语句优化。

    (1)慢查询日志统计

            记一次某APP后台接口并发优化案例_第3张图片

          mongodb慢查询统计参考:待完善。

    (2)根据慢查询日志,结合语句执行次数与执行时长,添加索引,如:

            db.xy_contentPV.createIndex({"docid": 1}, {background: true})

          mongodb索引优化参考:待完善。

    (3)分库、将数据统计的库和其他业务库分离,保证库与库之间互不影响

  2. 业务访问接口优化。

    (1)统计一小时内各业务接口访问频率(nginx日志)

            记一次某APP后台接口并发优化案例_第4张图片

         统计脚本参考:待完善。

    (2)给访问频率高 、且请求类型为GET的接口添加nginx缓存。

            缓存添加参考:https://blog.51cto.com/fengxiaoli/2530665

      (3)返回数据大于100K的接口添加nginx压缩。

               nginx压缩参考:待完善


四、压力测试

    1、确定测试接口:直播间相关接口、APP首页相关接口。

    2、测试接口和参数准备、由于没有研发支持,只能自己从nginx日志中抓取。

    3、测试工具使用的是阿里云的PTS,1000块大洋。

    4、APP首页进行多接口测试、直播间进行多接口测试、重要接口进行单接口测试。

    5、测试结果:

首页多接口并发:2000-3000 TPS

直播间多接口并发:3000 TPS

获取直播间评论单接口并发:10000TPS

创建评论单接口并发:5000-7000TPS

获取热卖内容并发:2000TPS

注:

处理能力:简称 TPS,每秒事务数,是衡量系统性能的一个非常重要的指标。