谈谈iOS app的线上性能监测】的更多相关文章

在移动端开发者中最重要的KPI应该是崩溃率.当崩溃率稳定下来后,工作的重心就应该转移到性能优化上.那么问题来了,如果你的项目也没有接入任何性能监测SDK,没有量化的指标来衡量,那你说你优化了性能领导信么? 虽然现在市面上第三方性能检测平台已经很成熟,但笔者还是比较建议公司自己写自己的sdk,原因如下 1. 数据安全 2. 避开费用,有的平台是MAU三万以下不收费,超出后费用极高. 3. 可以自定义指标没有无用代码,一接别人SDK包体积增大不少,其实你只用到了个别几个功能. 本文主要内容是给小项目…
最近读到一篇文章(http://www.merowing.info/2013/03/overlaying-application-version-on-top-of-your-icon/)介绍了一种非常简单的,把版本信息显示到iOS app的icon上的方式, 有了这个技能,在测试多版本的时候,测试人员可以直接从icon上看到当前测试的版本,无需在到HockeyApp或者TestFlight中去看哪些机器使用的哪个版本,可以提升效率. 下面是我如何Get这个技能的: 首先,获取想展示到图标上的信…
1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因.通常来说,crash产生来源于两种问题:违反iOS系统规则导致的crash和App代码逻辑BUG导致的crash,下面分别对他们进行分析. 违反iOS系统规则产生crash的三种类型: (1) 内存报警…
今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为根据之前参加微软的Online Test经验来看,应该会有一些复杂的算法题.但是事实上Booking测试的题目,前三题均没有涉及高深的算法,都是一些基础的Objective-C和iOS开发的知识,这反而带了更大的困惑,想的太多反而浪费了大量时间. 测试邀请邮件 最后的结果是完成了3/4,因为时间没了…
在咱们测试过程中,经常需要切换测试环境和线上环境.大致有如下几个方案. 一.服务器地址编译到app中 此种方式需要在代码里保存两套配置,一套指向线上,一套指向测试.通过编译参数分别生成测试包.线上包.记住此种方式一定要通过编译参数实现,防止将测试环境发到线上. 优点:简单暴力无需其它设置及设备支持 缺点:切换服务器需重新编译安装包. 二.app中留着修改服务器地址的隐藏功能 此种方式debug编译的情况下,预留一个可以修改服务器的入口,进入后可以随意切换服务器地址. 优点:代码中不会出现测试服务…
起因 下午接到运维反馈,生产redis有个执行keys的命令请求太慢了,要两三秒才能响应 涉及命令如下: KEYS ttl_600::findHeadFootData-15349232-*-head 什么是keys命令? keys官方文档 http://www.redis.cn/commands/keys.html KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key . 时间复杂度为O(N),N为数据库里面key的数量. 例如,Redis在一个有1百万个key的…
转自:http://www.cocoachina.com/ios/20151118/14270.html iOS hybrid App 的实现原理及性能监测 2015-11-18 11:39 编辑: lansekuangtu 分类:iOS开发 来源:CocoaChina 1 2571 iOS原理hybrid app性能监测     作者董一凡自述:作为一名写了十年代码的程序员,目前我最擅长的领域是移动平台的客户端开发,在移动领域的开发时间超过七年,前前后后涉猎过很多个平台.随着大部分移动平台自己…
通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的性能品质保驾护航. 应用程序稳定性是影响用户体验及留存的关键因素 对于移动App的开发者来说,最基础也是最关注的问题就是应用程序的稳定性.而崩溃问题是影响稳定性的重要因素, 包括NSException.Signal.卡死.OOM(Out Of Memory)等问题类型.其中,OOM问题是随着业务的迭…
一个App的稳定性,主要决定于整体的系统架构设计,同时也不可忽略编程的细节,正所谓"千里之堤,溃于蚁穴",一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃.尤其因为苹果限制了热更新机制,App本身的稳定性及容错性就显的更加重要,之前可以通过发布热补丁的方式解决线上代码问题,现在就需要在提交之前对App开发周期内的各个指标进行实时监测,尽量让问题暴漏在开发阶段,然后及时修复,减少线上出问题的几率 .针对一个App的开发周期,它的稳定性指标主要有以下几个环节构成,用一个脑图…
每一个成功的 App,都拥有强大的性能体验.本期 fir.im Weekly 整理了微信读书.美团外卖. 天猫.美团点评技术团队的关于性能监测优化方面策略和工具的分享,一起来看看. 微信读书 iOS 质量保证及性能监控 App 版本快速迭代,功能越来越复杂,App卡死动画丢失等等问题出现.看看微信读书 iOS 版本是如何利用监控工具来解决这些问题.文章传送门. 美团外卖移动端性能监测体系实现 "从开发.测试到上线时期,随着功能需求累加,人员规模扩大,项目越来越复杂,且迭代周期短,用户感知到多种多…
1. App启动过程 解析Info.plist 加载相关信息,例如如闪屏 沙箱建立.权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法) 定位内部.外部指针引用,例如字符串.函数等 执行声明为__attribute__((constructor))的C函数 加载类扩展(Category)中的方法 C++静态对象加载.调用ObjC的 +load 函数 程序执行 调用main() 调用UIApplication…
快速定位iOS线上App崩溃在哪个控制器里面,需要和后台配合使用 下载本SDK并手动添加到项目里 新建所有的页面都继承于YZViewController 在AppDelegate的didFinishLaunchingWithOptions方法里面写下如下代码: if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"BUG"] isKindOfClass:[NSDictionary class]]) { NSLog(@&quo…
25条提高iOS App性能的技巧和诀窍 当我们开发iOS应用时,好的性能对我们的App来说是很重要的.你的用户也希望如此,但是如果你的app表现的反应迟钝或者很慢也会伤害到你的审核. 然而,由于IOS设备的限制有时很难工作得很正确.我们开发时有很多需要我们记住这些容易忘记的决定对性能的影响. 这是为什么我写这篇文章的原因.这篇文章用备忘录的形式集合了25个技巧和诀窍可以用来提高你的app性能.所以保持阅读来给你未来的App一个很不错的提高.       Note:在优化代码之前,必须保证有个需…
本文版权归个人所有,如需转载请注明出处http://www.cnblogs.com/PengLee/p/4637080.html 目录 应用商店 互联网开放平台 软件下载中心 媒体社交平台 刷榜推广 应用商店 大家都应该清楚,应用商店应该是App推广渠道中最重要的.也是使用最多的一种.目前应用商店的也有很多,总结起来, 大概有如下几类: 1.手机生产商 小米应用商店.联想乐商店,HTC市场,oppo nearme,魅族市场,moto智件园等 2.三大系统应用商店 Google的Android M…
题记 麻痹起来嗨!看网上那么多的教程,依然在我心爱的爱屁屁在上架的时候遇到各种 J8 问题,最大的问题就是:Xcode 证书什么的,Provisioning Profile 什么的,Debug 什么的,Production 和Distribution 什么乱 78 糟的都把我搞糊涂了,网上很多教程都是好旧的(虽然思路一样,但是不够详细),所以我打算把我今年已经上架的干货儿(下载地址,介绍地址)的上架艰辛历程写下来,一是可以让自己以后上架 app 时可以减少一点儿弯路,二是可以给大家一个参考. 上…
随着中国企业出海Go Global,越来越多的用户开始在Global Azure部署自己的应用.由于对Global Azure功能和文档的不熟悉,使用过程中或多或少遇到了一些坑.事实上呢,这些并不是坑的坑是完全可以解决.这篇博客就是一个真实的客户案例. 客户需求 客户需要在Azure海外region部署自行研发的app后端服务器,这之后客户会向IOS App Store提交App的审核 目前问题 客户在Azure上部署了虚机但是没法分配ipv6的地址,客户还尝试配置IPv6隧道但是也不work.…
我们知道在上架苹果应用过程中,申请发布证书需要用到钥匙串,上传ipa需要用到xcode或Application loader提交构建版本,这都需要Mac苹果机. 本文介绍如何在Windows环境下申请证书和上传IPA流程. http://bbs.reactnative.cn/topic/3600/windows%E7%8E%AF%E5%A2%83%E4%B8%8Bios-app%E6%89%93%E5%8C%85%E4%B8%8A%E4%BC%A0appstore%E8%AF%A6%E7%BB%…
本文版权归个人所有,如需转载请注明出处http://www.cnblogs.com/PengLee/p/4637080.html 目录 应用商店 互联网开放平台 软件下载中心 媒体社交平台 刷榜推广 应用商店 大家都应该清楚,应用商店应该是App推广渠道中最重要的.也是使用最多的一种.目前应用商店的也有很多,总结起来, 大概有如下几类: 1.手机生产商 小米应用商店.联想乐商店,HTC市场,oppo nearme,魅族市场,moto智件园等 2.三大系统应用商店 Google的Android M…
常话说“软件是不能保证百分百没有bug的”,因此当我们的APP上线之后,市场的使用人员会反馈一些我们测试人员可能在测试时遗漏的问题,包括也不防会有一些需求的反馈,这些问题均由售后人员反馈整理,以一种方式进行记录(当前我们用的是TAPD),及时给到对应的负责人,负责人来判定此问题的严重性,并决策是否及时处理. 定期的将线上的问题进行整理汇总,反馈给对应的领导进行查看,评估我们整体的质量与市场效果. 为了开发更准确的定位问题,那么在问题的收集上应该更全的给到对应的所需字段值,如:机型.系统版本.软件…
一.前言: 作为一名iOS开发者,把辛辛苦苦开发出来的App上传到App Store是件必要的事.但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤. 二.准备: 一个已付费的开发者账号(可分为): 账号类型分为个人(Individual) 公司(Company) 企业(Enterprise) 高校(University)四种类型 每年资费分别为$99.$99.$299.免费. 一个已经开发完成的项目. 三.检查: 安装的Xcode必须为正式版,beta版本的…
大家好,我是鸭血粉丝(大家会亲切的喊我 「阿粉」),是一位喜欢吃鸭血粉丝的程序员,回想起之前线上出现 OOM 的场景,毕竟当时是第一次遇到这么 紧脏 的大事,要好好记录下来. 1 事情回顾 在某次周五,通过 Grafana 监控,发现线上环境突然出现CPU和内存飙升的情况: 但是看到网络输出和输入流量都不是很高,所以网站被别人攻击的概率不高,后来其它服务器的负荷居高不下. 阿粉先 dump 下当时的堆栈信息,保留现场,接着进行了简单的分析,为了稳住用户,通知运维一台一台服务器进行重新启动,让大家…
项目背景 最近,做一个按优先级和时间先后排队的需求.用 Redis 的 sorted set 做排队队列. 主要使用的 Redis 命令有, zadd, zcount, zscore, zrange 等. 测试完毕后,发到线上,发现有大量接口请求返回超时熔断(超时时间为3s). Error日志打印的异常堆栈为: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the po…
目录 一.binlog 的高速缓存 二.刷盘机制 三.推荐的策略 推荐阅读 问个问题吧!为什么你需要了解binlog的落盘机制呢? 我来回答一下: ​ 上一篇文章提到了生产环境中你可以使用binlog做数据的恢复.审计.以及搭建主从架构的MySQL集群.那你使用这些特性优势的时候有没有问自己一下,你使用的binlog是安全的吗?会不会少记录了一部分数据呢?因为使用一个有问题的binlog去做数据恢复.审计.搭建主从MySQL集群的结果肯定是错误的! ​ 下面,我们一起来看一下MySQL执行事物的…
我们在hbuilderx这些开发工具打包好ios app后,需要将这个app提交appstore才能让用户下载安装. 上传IOS APP主要是通过苹果开发者中心来上传,然后借助香蕉云编上传工具来上传就可以了. 详细的步骤如下: 1.先登录苹果开发者中心 https://developer.apple.com/ 点击进入app store connect,创建app,填写各项信息.这时候你会发现构建版本没有东西可以选 2.但是苹果提供的工具xcode和transporter只能安装在mac电脑,假…
最近在做产品需求的时候上线了一个新的产品需求,给用户多了一种新的排序排序规则,更加方便用户找到自己想要的东西.新版本发布后,QA 给我发了一个 线上崩溃 bug 链接,具体内容如下: 看到上面的链接,我有点懵逼了,就这排序还能给我搞出 bug 来?看到抛出的异常信息,也没有见过,于是直接百度搜索了. 一百度,发现很多人遇到这个问题,下面简单说下出现这个问题的原因: 在 JDK7 版本以上,Comparator 要满足自反性,传递性,对称性,不然 Arrays.sort,Collections.s…
增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启动流程的良好体验至关重要. 「马蜂窝旅游」App 是马蜂窝为用户提供服务的主要阵地,其承载的业务模块不断丰富和完善,产品功能日趋复杂,已经逐渐成长为一个集合旅行信息.出行决策.自由行产品及服务交易的一站式移动平台. 「马蜂窝旅游」iOS App 历经几十个版本的开发迭代,在启动流程上积累了一定的技术…
程序启动之前 从exec()开始 main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpid,fork 函数创建子进程后通常都会调用 exec 函数来执行一个新程序:而exec是直接让你的程序代替原来的程序运行. system 是在单独的进程中执行命令,完了还会回到你的程序中.而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调…
     作为一名写了⑦年代码的程序员,目前我最擅长的领域是IOS的客户端开发,在移动领域的开发时间2年. ⑦年前,我刚入行的时候,曾经认为自己将会永远做一个LINUX 服务端C++程序员,于是花了大量时间在C++上.现在C++也是我工作所用的主力语言之一,工作之外也会偶尔写点什么娱乐一下. 写了一些年程序后,终于意识到了之前定位的狭隘,于是开始广泛的学习各种技术,各种各样的语言也学了很多,值得庆幸的是,几年折腾下来,我一直也没有对写代码这件事感到厌倦,于是我又认为自己将会永远把开发做下去. 现…
一.背景 冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象.美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代开发,产品形态不断完善,业务功能日趋复杂:同时外卖App也已经由原来的独立业务App演进成为一个平台App,陆续接入了闪购.跑腿等其他新业务.因此,更多更复杂的工作需要在App冷启动的时候被完成,这给App的冷启动性能带来了挑战.对此,我们团队基于业务形态的变化和外卖App的特点,对冷启动进行了持续且有针对性的优化工作,目的就是…