CPU|这些前后端性能指标,面试一问我就懵了( 二 )


  • 应用处于后台 , 连续运行2小时的静默流量;
  • 应用处于前台 , 高负荷运行时的流量峰值 。
  • 一般有哪些原因导致流量被大量消耗呢?
    • 资源太多
    • 图片太大
    • 重复请求
    • 日志上传
    • 埋点数据
    4、Crash和ANR
    Crash的原因一般有:空指针、内存泄漏、数组越界、调用了高版本的API 。
    Android应用程序 , 如果主线程(即UI线程)在超时间内对用户输入时间没有处理完毕 , 就会出现Application Not Responding弹出框 , 用户需要选择等待或者强制关闭来杀死进程 。
    5、FPS
    就是动画帧率 。 帧就是指动画或视频的“画面” , 1幅画就叫做“1帧” , 帧数就是在1秒钟时间里传输的图片的量 , 也可以理解为图形处理器每秒钟能够刷新几次 , 通常用FPS(Frames Per Second)表示 。
    每一帧都是静止的图象 , 快速连续地显示帧便形成了运动的假象 , 高的帧率可以得到更流畅和逼真的动画 , 因此每秒钟帧数 (FPS) 越多 , 显示出来的动作就越流畅 。
    那么什么是合理的FPS呢?
    帧率达到60FPS以上 , 人眼主观就感受不到差别了 。 所以一般以60FPS作为衡量标准 , 即要求每一帧刷新的时间小于16ms , 这样才能保证滑动中平滑的流畅度 。
    02
    后端关注点
    • 响应时间:接口从请求到响应、返回的时间 。
    • 并发用户数:同一时间点请求服务器的用户数 , 支持的最大并发数 。
    • 内存占用:APP的内存开销 。
    • 吞吐量(TPS):Transaction Per Second 每秒事务数 。 在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间 。
    • 错误率:失败的事务数/事务总数 。
    • 资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O 。
    【CPU|这些前后端性能指标,面试一问我就懵了】
    1、响应时间
    指的是客户发出请求到得到响应的整个过程的时间 。 在某些工具中 , 请求响应时间通常会被称为TTLB(Time to laster byte) , 意思是从发起一个请求开始 , 到客户端收到最后一个字节的响应所耗费的时间 。 所以也可以理解成 , 响应时间=网络响应时间+应用程序响应时间 。
    因此在大部分公司的项目实际运作中 , 会把性能测试分为两部分 , APP 前端的响应时间、后端接口请求和返回的时间 , 分别是系统级性能测试和接口级性能测试 。
    • 网络传输时间:T3+T4+T5+T6
    • 应用服务器处理时间:T5+T7+T8
    • 数据库服务器处理时间:T7+T8
    响应时间= N1+N2+T3+T4+T5+T6+T7+T8
    那么什么是合理的响应时间呢?
    • 互联网上对于用户响应时间 , 有一个普遍的标准 , 2-5-10原则
    详细来说 , 就是:
    • 2秒之内得到响应 , 会认为系统响应很快
    • 5秒之内得到响应 , 会认为系统响应的速度还不错
    • 10秒之内得到响应 , 会认为系统响应的速度很糟糕
    • 超过10秒还未得到响应 , 会认为系统是没有响应的
    2、CPU
    在Linux系统下 , CPU利用率分为用户态、系统态、空闲态 , 分别表示CPU处于用户态执行的时间 , 系统内核执行的时间 , 和空闲系统进程执行的时间 。 平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间 。