CN108563526A - 一种iOS卡顿监控策略 - Google Patents
一种iOS卡顿监控策略 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0715—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/073—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0778—Dumping, i.e. gathering error/state information after a fault for later diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root 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卡顿监控策略。
背景技术
现有的移动设备(手机,平板电脑,等等),有越来越多的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语句存储到本地资源监控文件,继续监听。
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)
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)
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 | 北京京东尚科信息技术有限公司 | 移动终端、应用程序崩溃处理方法及装置 |
-
2018
- 2018-03-06 CN CN201810181674.4A patent/CN108563526A/zh active Pending
Patent Citations (4)
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)
Title |
---|
JG2014: "微信读书iOS性能优化总结", 《HTTPS://WWW.CNBLOGS.COM/YJG2014/ARCHIVE/2016/11/08/6044025.HTML》 * |
Cited By (11)
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 |