CN108563526A - 一种iOS卡顿监控策略 - Google Patents

一种iOS卡顿监控策略 Download PDF

Info

Publication number
CN108563526A
CN108563526A CN201810181674.4A CN201810181674A CN108563526A CN 108563526 A CN108563526 A CN 108563526A CN 201810181674 A CN201810181674 A CN 201810181674A CN 108563526 A CN108563526 A CN 108563526A
Authority
CN
China
Prior art keywords
data
monitor
monitored
ios
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810181674.4A
Other languages
English (en)
Inventor
邱扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kuwo Technology Co Ltd
Original Assignee
Beijing Kuwo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kuwo Technology Co Ltd filed Critical Beijing Kuwo Technology Co Ltd
Priority to CN201810181674.4A priority Critical patent/CN108563526A/zh
Publication of CN108563526A publication Critical patent/CN108563526A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种iOS卡顿监控策略,包括如下步骤:调用监听管理器,对以下事件进行监听:监听ui界面,监听App崩溃信息,监听管理器将获取的监听数据存储于运行App的设备的本地,调用上报策略,开启后台线程用于上报监听数据,读取存储于本地的监听数据,将其写入上报数据缓冲区,将缓冲区内数据归类,将归类数据打包,然后发起上报请求,服务端接收上报的数据。本发明,监控内容丰富,流程清晰,数据获取全面,有利于辅助程序员准确判断卡顿的发生时间、卡顿原因,为提高App性能,确保数据安全提供更好的保障。

Description

一种iOS卡顿监控策略
技术领域
本发明涉及iOS系统监控技术领域,具体说是一种iOS卡顿监控策略。
背景技术
现有的移动设备(手机,平板电脑,等等),有越来越多的App被开发、发布出来,而开发者并非都是专业、经验丰富的软件设计人员,在如此复杂的环境中,开发软件最关注的话题之一就是性能。程序员除了需要努力提高代码质量之外,如何及时发现和监控软件中那些造成性能低下的“罪魁祸首”也是急需解决的问题。毕竟工欲善其事必先利其器,如果不能及时、有效的进行实时卡顿监控,则不利于程序员及时发现、排除程序BUG,尤其是一些隐藏的问题将很难发现。
在开发测试阶段,分析软件运行的性能消耗,有许多辅助调试工具,例如在Xcode中已经集成了非常方便的调试工具Instruments。但一款软件经过测试流程和实验室分析肯定是不够的,在正式环境中,由大量用户在使用过程中监控、分析到的数据,更能说明实际情况,有助于解决一些隐藏的问题,提高用户的使用体验,确保软件的可靠运行,确保用户数据的安全。
众所周知,iOS平台因为UIKit(iOS界面组件UIkit 是 YOOtheme 团队开发的一款轻量级、模块化的前端框架,可快速构建强大的web前端界面。UIKit提供了全面的HTML、CSS及JS组件,它们使用简单,容易定制和扩展。所有UIKit控件均继承自 UIView。UIKit框架是iPhone应用程序开发中最基本的框架,也是用得最多、最重要的框架,从名字我们就能理解是界面相关操作组件集合。)本身的特性,需要将所有的UI操作都放在主线程执行,所以也造成不少程序员都习惯将一些线程安全性不确定的逻辑,以及其它线程结束后的汇总工作等等放到了主线,所以主线程中包含的这些大量计算、IO、绘制都有可能造成卡顿。监控卡顿,最直接就是找到主线程都在干些什么。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种iOS卡顿监控策略,监控内容丰富,流程清晰,数据获取全面,有利于辅助程序员准确判断卡顿的发生时间、卡顿原因,为提高App性能,确保数据安全提供更好的保障。
为达到以上目的,本发明采取的技术方案是:
一种iOS卡顿监控策略,其特征在于,包括如下步骤:
调用监听管理器,对以下事件进行监听:
监听ui界面,
监听App崩溃信息,
监听管理器将获取的监听数据存储于运行App的设备的本地,
调用上报策略,
开启后台线程用于上报监听数据,
读取存储于本地的监听数据,将其写入上报数据缓冲区,
将缓冲区内数据归类,
将归类数据打包,然后发起上报请求,
服务端接收上报的数据。
在上述技术方案的基础上,上报请求如果无响应,则循环上报3次,依然无响应,则返回上报数据错误信息。
在上述技术方案的基础上,服务端成功接收上报的数据后,根据缓冲区中的资源信息,清理存储于本地的监听数据。
在上述技术方案的基础上,所述监听ui界面,具体步骤如下:
监听UIView和CALayer的setNeedsLayout、setNeedsDisplay、setNeedsDisplayInRect方法,
setNeedsLayout方法用于标记视图为需要重新布局,
setNeedsDisplay方法用于刷新、重绘视图内容contents,
setNeedsDisplayInRect方法用于标记视图需要进行重画,
判断被监听的方法是否在主线程,
如果在主线程,则继续监听,
如果不在主线程,则进行如下处理:
获取调用堆栈信息,
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
在上述技术方案的基础上,所述监听App崩溃信息,具体步骤如下:
注册异常监听信号,
持续捕获App异常,
产生异常时,获取异常堆栈信息
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
在上述技术方案的基础上,监听管理器还对网络请求进行统计,对数据缓存进行记录,形成本地资源监控文件,作为监听数据的一部分。
在上述技术方案的基础上,对网络请求进行统计时,检测每一个网络请求的结果,判断网络请求是否成功,
如果成功,则无进一步处理,继续监听,
如果失败,则将网络请求url,错误码,请求时机,返回数据存储到本地资源监控文件,继续监听。
在上述技术方案的基础上,对数据缓存进行记录时,根据预设的数据缓存存取阈值,与每次数据存取的时间进行比对,判断存取时间是否超过存取阈值,
如果未超过,则无进一步处理,继续监听,
如果超过,则将存取时机,存取时间,存取sql语句存储到本地资源监控文件,继续监听。
本发明所述的iOS卡顿监控策略,监控内容丰富,流程清晰,数据获取全面,有利于辅助程序员准确判断卡顿的发生时间、卡顿原因,为提高App性能,确保数据安全提供更好的保障。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的iOS卡顿监控策略,包括如下步骤:
调用监听管理器,对以下事件进行监听:
监听ui界面,
监听App崩溃信息,
监听管理器将获取的监听数据存储于运行App的设备的本地,
调用上报策略,
开启后台线程用于上报监听数据,
读取存储于本地的监听数据,将其写入上报数据缓冲区,
将缓冲区内数据归类,
将归类数据打包,然后发起上报请求,
服务端接收上报的数据。
在上述技术方案的基础上,上报请求如果无响应,则循环上报3次,依然无响应,则返回上报数据错误信息。
在上述技术方案的基础上,服务端成功接收上报的数据后,根据缓冲区中的资源信息,清理存储于本地的监听数据。
在上述技术方案的基础上,所述监听ui界面,具体步骤如下:
监听UIView和CALayer的setNeedsLayout、setNeedsDisplay、setNeedsDisplayInRect方法,
setNeedsLayout方法用于标记视图为需要重新布局,
setNeedsDisplay方法用于刷新、重绘视图内容contents,
setNeedsDisplayInRect方法用于标记视图需要进行重画,
判断被监听的方法是否在主线程,
如果在主线程,则继续监听,
如果不在主线程,则进行如下处理:
获取调用堆栈信息,
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
在上述技术方案的基础上,所述监听App崩溃信息,具体步骤如下:
注册异常监听信号,
持续捕获App异常,
产生异常时,获取异常堆栈信息
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
在上述技术方案的基础上,监听管理器还对网络请求进行统计,对数据缓存进行记录,形成本地资源监控文件,作为监听数据的一部分。
在上述技术方案的基础上,对网络请求进行统计时,检测每一个网络请求的结果,判断网络请求是否成功,
如果成功,则无进一步处理,继续监听,
如果失败,则将网络请求url,错误码,请求时机,返回数据存储到本地资源监控文件,继续监听。
在上述技术方案的基础上,对数据缓存进行记录时,根据预设的数据缓存存取阈值,与每次数据存取的时间进行比对,判断存取时间是否超过存取阈值,
如果未超过,则无进一步处理,继续监听,
如果超过,则将存取时机,存取时间,存取sql语句存储到本地资源监控文件,继续监听。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (8)

1.一种iOS卡顿监控策略,其特征在于,包括如下步骤:
调用监听管理器,对以下事件进行监听:
监听ui界面,
监听App崩溃信息,
监听管理器将获取的监听数据存储于运行App的设备的本地,
调用上报策略,
开启后台线程用于上报监听数据,
读取存储于本地的监听数据,将其写入上报数据缓冲区,
将缓冲区内数据归类,
将归类数据打包,然后发起上报请求,
服务端接收上报的数据。
2.如权利要求1所述的iOS卡顿监控策略,其特征在于:上报请求如果无响应,则循环上报3次,依然无响应,则返回上报数据错误信息。
3.如权利要求1所述的iOS卡顿监控策略,其特征在于:服务端成功接收上报的数据后,根据缓冲区中的资源信息,清理存储于本地的监听数据。
4.如权利要求1所述的iOS卡顿监控策略,其特征在于:所述监听ui界面,具体步骤如下:
监听UIView和CALayer的setNeedsLayout、setNeedsDisplay、setNeedsDisplayInRect方法,
setNeedsLayout方法用于标记视图为需要重新布局,
setNeedsDisplay方法用于刷新、重绘视图内容contents,
setNeedsDisplayInRect方法用于标记视图需要进行重画,
判断被监听的方法是否在主线程,
如果在主线程,则继续监听,
如果不在主线程,则进行如下处理:
获取调用堆栈信息,
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
5.如权利要求1所述的iOS卡顿监控策略,其特征在于:所述监听App崩溃信息,具体步骤如下:
注册异常监听信号,
持续捕获App异常,
产生异常时,获取异常堆栈信息
将主要信息存储到本地资源文件,所述主要信息至少包括:调用时机,堆栈信息,
继续监听。
6.如权利要求1所述的iOS卡顿监控策略,其特征在于:监听管理器还对网络请求进行统计,对数据缓存进行记录,形成本地资源监控文件,作为监听数据的一部分。
7.如权利要求6所述的iOS卡顿监控策略,其特征在于:对网络请求进行统计时,检测每一个网络请求的结果,判断网络请求是否成功,
如果成功,则无进一步处理,继续监听,
如果失败,则将网络请求url,错误码,请求时机,返回数据存储到本地资源监控文件,继续监听。
8.如权利要求6所述的iOS卡顿监控策略,其特征在于:对数据缓存进行记录时,根据预设的数据缓存存取阈值,与每次数据存取的时间进行比对,判断存取时间是否超过存取阈值,
如果未超过,则无进一步处理,继续监听,
如果超过,则将存取时机,存取时间,存取sql语句存储到本地资源监控文件,继续监听。
CN201810181674.4A 2018-03-06 2018-03-06 一种iOS卡顿监控策略 Pending CN108563526A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810181674.4A CN108563526A (zh) 2018-03-06 2018-03-06 一种iOS卡顿监控策略

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810181674.4A CN108563526A (zh) 2018-03-06 2018-03-06 一种iOS卡顿监控策略

Publications (1)

Publication Number Publication Date
CN108563526A true CN108563526A (zh) 2018-09-21

Family

ID=63531396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810181674.4A Pending CN108563526A (zh) 2018-03-06 2018-03-06 一种iOS卡顿监控策略

Country Status (1)

Country Link
CN (1) CN108563526A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815083A (zh) * 2018-12-21 2019-05-28 瑞庭网络技术(上海)有限公司 一种应用崩溃的监控方法、装置、电子设备及介质
CN109922141A (zh) * 2019-02-21 2019-06-21 北京宝兰德软件股份有限公司 Java应用服务器中活动请求列表的实时获取方法及装置
CN110147308A (zh) * 2019-05-20 2019-08-20 人立方智能科技有限公司 应用于iOS系统的APP的监控跟踪系统及其工作方法
CN111221697A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 调用监听方法、操作检测方法、装置及计算设备
CN111538638A (zh) * 2020-04-28 2020-08-14 北京思特奇信息技术股份有限公司 一种iOS端应用程序性能的监控方法和装置
CN111625456A (zh) * 2020-05-26 2020-09-04 北京达佳互联信息技术有限公司 一种卡顿定位方法和装置
CN111897672A (zh) * 2020-07-28 2020-11-06 北京字节跳动网络技术有限公司 处理终端异常的方法、装置、终端和存储介质
CN113806189A (zh) * 2020-06-16 2021-12-17 北京字节跳动网络技术有限公司 用户界面操作监控方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318505A1 (en) * 2012-05-25 2013-11-28 Nec Laboratories America, Inc. Efficient Unified Tracing of Kernel and User Events with Multi-Mode Stacking
CN106502899A (zh) * 2016-11-01 2017-03-15 北京蓝海讯通科技股份有限公司 监测应用的方法、装置、移动终端及系统
CN106598806A (zh) * 2016-12-05 2017-04-26 北京金和网络股份有限公司 监控基于 iPhone 平台开发的手机 APP 卡顿的方法
CN107436777A (zh) * 2016-05-27 2017-12-05 北京京东尚科信息技术有限公司 移动终端、应用程序崩溃处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318505A1 (en) * 2012-05-25 2013-11-28 Nec Laboratories America, Inc. Efficient Unified Tracing of Kernel and User Events with Multi-Mode Stacking
CN107436777A (zh) * 2016-05-27 2017-12-05 北京京东尚科信息技术有限公司 移动终端、应用程序崩溃处理方法及装置
CN106502899A (zh) * 2016-11-01 2017-03-15 北京蓝海讯通科技股份有限公司 监测应用的方法、装置、移动终端及系统
CN106598806A (zh) * 2016-12-05 2017-04-26 北京金和网络股份有限公司 监控基于 iPhone 平台开发的手机 APP 卡顿的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JG2014: "微信读书iOS性能优化总结", 《HTTPS://WWW.CNBLOGS.COM/YJG2014/ARCHIVE/2016/11/08/6044025.HTML》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221697A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 调用监听方法、操作检测方法、装置及计算设备
CN111221697B (zh) * 2018-11-23 2024-02-27 阿里巴巴集团控股有限公司 调用监听方法、操作检测方法、装置及计算设备
CN109815083A (zh) * 2018-12-21 2019-05-28 瑞庭网络技术(上海)有限公司 一种应用崩溃的监控方法、装置、电子设备及介质
CN109815083B (zh) * 2018-12-21 2021-06-04 瑞庭网络技术(上海)有限公司 一种应用崩溃的监控方法、装置、电子设备及介质
CN109922141A (zh) * 2019-02-21 2019-06-21 北京宝兰德软件股份有限公司 Java应用服务器中活动请求列表的实时获取方法及装置
CN110147308A (zh) * 2019-05-20 2019-08-20 人立方智能科技有限公司 应用于iOS系统的APP的监控跟踪系统及其工作方法
CN111538638A (zh) * 2020-04-28 2020-08-14 北京思特奇信息技术股份有限公司 一种iOS端应用程序性能的监控方法和装置
CN111625456A (zh) * 2020-05-26 2020-09-04 北京达佳互联信息技术有限公司 一种卡顿定位方法和装置
CN111625456B (zh) * 2020-05-26 2024-04-30 北京达佳互联信息技术有限公司 一种卡顿定位方法和装置
CN113806189A (zh) * 2020-06-16 2021-12-17 北京字节跳动网络技术有限公司 用户界面操作监控方法、装置、设备和存储介质
CN111897672A (zh) * 2020-07-28 2020-11-06 北京字节跳动网络技术有限公司 处理终端异常的方法、装置、终端和存储介质

Similar Documents

Publication Publication Date Title
CN108563526A (zh) 一种iOS卡顿监控策略
Iqbal et al. Oasis: A framework for linking notification delivery to the perceptual structure of goal-directed tasks
JP5798372B2 (ja) 動的計測を介してのカスタムコードの診断を効率化するためのメソッド呼び出しの検出
US20060075386A1 (en) Method and system for a call stack capture
CN109284269A (zh) 异常日志分析方法、装置、存储介质及服务器
US8612573B2 (en) Automatic and dynamic detection of anomalous transactions
US20110098973A1 (en) Automatic Baselining Of Metrics For Application Performance Management
CN110704277B (zh) 一种监测应用性能的方法、相关设备及存储介质
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
US20130132933A1 (en) Automated compliance testing during application development
US8631280B2 (en) Method of measuring and diagnosing misbehaviors of software components and resources
US8095514B2 (en) Treemap visualizations of database time
JP2012084150A (ja) 2パス自動アプリケーション計測
US7685475B2 (en) System and method for providing performance statistics for application components
CN102122263A (zh) 一种java应用系统运行时监控方法和装置
CN107632920A (zh) 一种输变电设备监测装置深度监控方法
CN107807872A (zh) 一种输变电系统运行状态监测方法
EP2410430A1 (en) System and method for use in indicating execution of application code
CN110928930B (zh) 一种软件开发行为监控系统
CN108153587A (zh) 一种针对大数据平台的慢任务原因检测方法
US20170132057A1 (en) Full duplex distributed telemetry system
US20180337817A1 (en) Performance evaluation of applications that access external resources
US7900196B2 (en) Method and apparatus for monitoring for conditions during execution of code
CN112069049A (zh) 数据监控管理方法、装置、服务器及可读存储介质
CN114048099A (zh) Java应用监控方法及装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180921

RJ01 Rejection of invention patent application after publication