U-APM SDK上报策略
iOS SDK上报策略
错误类型 | 上报策略 |
Swift/Objective-C/自定义异常/C#(仅限Unity)/卡顿/OOM | 下次启动时上报 |
启动/网络/H5页面分析 | 实时上报 |
内存指标 | 默认间隔10分钟后上报,如有修改以实际为准 |
原生页面 | 【页面采集】:1、目前版本sdk只采集页面创建的时间,非创建页面过程不做采集;2、采集开始:从页面创建的第一个生命周期方法开始计算;采集结束:页面创建的最后一个生命周期方法结束;3、落盘逻辑:页面采集结束即持久化到本地,聚合10分钟数据打性能报文上报 【帧率采集】1、采集开始:从页面创建完成开始采集帧率信息;采集结束:页面切换或采集时长达到上限则结束采集;2、sdk默认采集规则:1秒钟采集一次,采集6次持久化到文件记录到协议中的一条数据,聚合1分钟的数据,最长采集5分钟3、落盘逻辑:聚合10分钟数据打性能报文上报 |
单设备单日日志量上限为5MB
如果设备当前没有联网,会在联网后尝试发送
Android U-APM SDK 上报策略
如果您创建了自定义异常,则需要存在自动采集的崩溃/ANR发生时一起上报
测试中请关注SDK上报策略,当日单设备达到限制后无法再上报数据
错误类型 | 上报策略 |
Java | 崩溃捕获后会尝试立刻发送,如果失败就下次启动发送同时通过流量 + 数量的限制,详细请见下方表格 |
Native | |
ANR | |
自定义异常 | 发生后跟随Java/Native/ANR 错误上报。专业版可以在专业版管理中修改配置为立即上报 |
卡顿/启动/网络/H5页面分析 | 实时上报 |
原生页面 | 【页面采集】:1、目前版本sdk只采集页面创建的时间,页面back等非创建页面的过程不做采集;2、采集开始:从页面创建的第一个生命周期方法开始计算;采集结束:页面创建的最后一个生命周期方法结束;3、落盘逻辑:页面采集结束即持久化到本地,聚合1分钟数据打性能报文;发送逻辑:默认延迟1秒钟开始上报,冷启动时延迟1秒钟上报所有类型数据 【帧率采集】1、采集开始:从页面创建完成开始采集帧率信息;采集结束:页面切换或采集时长达到上限则结束采集;2、sdk默认采集规则:1秒钟采集一次,采集6次持久化到文件记录到协议中的一条数据,聚合1分钟的数据,最长采集5分钟3、落盘逻辑:聚合1分钟数据打性能报文;发送逻辑:默认延迟1秒钟开始上报,冷启动时延迟1秒钟上报所有类型数据 |
错误上报的流量+数量限制: | 目前默认值 |
允许保留在崩溃日志目录 mCrashLogsFolderName 下最大的崩溃日志条数。在生成日志前,如果发现崩溃日志文件数达到限制的条数,就会删除最早生成的那条崩溃日志。每删除一条崩溃日志,统计项 CrashStatKey.LOG_ABANDONED_FILE 和 CrashStatKey.LOG_ABANDONED_BUILTIN_FILE 都会加 1 | 15 |
允许保留在崩溃日志目录 mCrashLogsFolderName 下最大的自定义日志数。在生成自定义日志前,如果发现自定义日志文件数达到限制,就会删除最早生成的那个自定义日志。每删除一条自定义日志,统计项 CrashStatKey.LOG_ABANDONED_FILE 和 CrashStatKey.LOG_ABANDONED_CUSTOM_FILE 都会加 1。 | 10 |
java 崩溃日志中,获取 logcat 的最大行数 | 1500 |
native 崩溃日志中,获取 logcat 的最大行数 | 3000 |
anr 日志中,获取 logcat 的最大行数 | 1000 |
是否同步上传主进程初始化过程中产生的崩溃日志。开启该选项时,如果 SDK 检测到主进程发生崩溃,在生成完该崩溃日志后,SDK 会尝试立即将崩溃日志上传(以防止该场景下的稳定崩溃收集不到)。该开关仅在 java 和 native 崩溃中生效,自定义日志无效。SDK 判断主进程的条件为:Package Name 与 /proc/self/cmdline 中的进程名相等。 | true |
是否生成完日志后立即上传。该开关针对除自定义日志以外的日志有效,自定义日志由日志生成时指定是否立即上传。 | true |
是否在发现 APP 当前的版本与上次运行时的版本不一致时,清除所有的崩溃统计数据。版本是否一致,是根据版本号 VersionInfo.mVersion、子版本号 VersionInfo.mSubVersion、打包流水号 VersionInfo.mBuildId 判断,任何一个不一样,都会认为是不同版本。 | false |
是否在生成完崩溃日志后,使用 gz 算法压缩崩溃日志。压缩成功后,原日志被删除;压缩失败,原日志将保留 | true |
是否在生成完崩溃日志后,使用默认算法加密崩溃日志。加密成功后,原日志被删除;加密失败,原日志将保留 | false |
生成日志时,每个日志允许写入的最大字节数。 当达到指定的字节数时,会将剩余的全部丢弃。日志的总长度、丢弃字节数等信息,在日志最后会有记录。对 JAVA, NATIVE, ANR 日志都有效;为 <= 0 的值时,表示不限制。 | 1024*1024 |
在上传崩溃日志时,上传的单个日志允许的最大字节数。超过此限制时,将放弃上传该日志并直接删除,同时将统计项 CrashStatKey.LOG_LARGE_FILE加 1 。其对所有类型的日志有效。为 <= 0 的值时,表示不限制。 | 800*1024 |
每24小时内,允许上传日志总共的最大字节数。超过时,将放弃日志的上传,日志将保留在磁盘;超过 24 小时后,再次调用上传接口时,再上传日志。为 < 0 的值时,表示不限制。每次尝试上传发现达到该限制时,统计项 CrashStatKey.LOG_UPLOAD_LIMIT 和 CrashStatKey.LOG_UPLOAD_BYTES_LIMIT 都会加 1。 | 1.5*1024*1024 |
每 24 小时内上传的最大崩溃日志条数。每次尝试上传发现达到该限制时,统计项 CrashStatKey.LOG_UPLOAD_LIMIT 和 CrashStatKey.LOG_UPLOAD_BUILTIN_LIMIT 都会加 1。其自版本 3.0.0 从 mMaxUploadCrashLogCountPerDay 重命名而来。 | 25 |
每 24 小时内上传的最大自定义日志条数。每次尝试上传发现达到该限制时,统计项 CrashStatKey.LOG_UPLOAD_LIMIT 和 CrashStatKey.LOG_UPLOAD_CUSTOM_LIMIT 都会加 1。 | 20 |
每 24 小时内每种自定义类型的日志允许生成的最大条数。不同类型的自定义日志条数会分别计数。 | 6 |
每个进程允许生成的最大 ANR 日志条数。 | 3 |
崩溃生成日志后,不自动重启 | true |
是否在 SDK 处理完 java 异常且生成完 java 崩溃日志后,将异常信息通知给 SDK 初始化之前,其他人(系统)注册的 UncaughtExceptionHandler。 | true |
是否在 SDK 处理完 native 崩溃信号且生成完 native 崩溃日志后,将崩溃信号通知给 SDK 初始化之前,其他人(系统)注册的信号处理函数。 | false |
自动更新当前 CPU 使用率等信息的时间间隔,单位为秒(s)。 | 50 |