admin管理员组

文章数量:1516870

iOS matrix

最近看到了一份关于 微信自研 APM 利器,Matrix 正式开源了

具体上报方案:

1、FPS,每秒传输帧数 参数 FPS 大概在50到60之间,低于此数值,在连续的一段时间内超过阀值的帧数上报,防止数据量过多。

2、CPU占用率,( > 50%  上报)

    1)、在控制器加载成功的时候获取CPU使用率( viewDidAppear )获取一次。

    2)、程序运行每隔5s获取一次

3、内存占用,(设置内存使用的阀值,iphoneX大概在100M+)

    1)、在控制器加载成功的时候获取内存使用率(viewDidAppear)获取一次。

    2)、程序运行每隔5s获取一次

4、卡顿,

    1)、创建一个子线程进行循环检测,每次检测时设置标记位为YES,然后派发任务到主线程中将标记位设置为NO,设置超时阀值为0.05。接着子线程沉睡超时阙值时长,判断标志位是否成功设置成NO,如果没有说明主线程发生了卡顿。

5、页面加载时间、(设置加载时间阀值0.3s左右)

    1)、从控制器加载成功的过程中(viewDidLoad -> viewDidAppear)获取一次

 

// 上报数据存储在本地缓存每隔1分钟将数据 (写内存) 整体一次性上报,每条记录以数组的形式存储

 

// 上报数据结构

"data":{

 "eventType":1,             // 时间类型 1、FPS 2、CPU占用率 3、内存占用 4、卡顿,5、页面加载时间

 "eventData":0.00,            // 上报的阀值  (FPS为平均阀值)

 "eventDuration":0.00       // 持续时间 FPS,其他为0

 "stackData":"单前堆栈信息",   // 单前堆栈信息

},

 

// 数据剥离到业务层处理 上报一次的数据

 “data”:{

  "appType":2,               // 1、货主 2、司机

  "appName":"YMM_Driver",    // YMM_Driver,YMM_Shipper

  "devModel":"vivo V3Max A", // 设备Model

  "devType": "vivo",                 // iPhoneX , ...

  "platVersion":"5.1.1",            // 平台版本

  "Platform":"android"             // android, ios

  "userId":"96315273729543070", // 用户id

  //"timeStamp":"January 14th 2019, 20:15:46.167", // 时间戳

},

 

目前有两个问题

1、数据有没有必要写文件?

2、具体的上报阀值,以什么样的标准来设定。

以上两个问题根据个人项目的具体实际情况而定

附赠Demo 在本人的资源文件页面下载

本文标签: iOS matrix