移动端压力测试

一、monkey APP性能测试

(adb shell monkey 1000
 adb logcat | gerp START获取包名和activity名
adb shell monkey -p 包名 1000
)

二、压测查看那些指标

  • TPS数值、CPU占用量、测试成功数量、error信息(服务器配置(CPU、内存、磁盘、网络I/O、进程数)、数据库配置(效率低下SQL、锁、缓存、会话、进程数)、中间件(线程池、JDBC连接池),应用(QPS、耗时、错误、同步异步、线程数、缓存队列)等方面考虑。
  • 接口压测:压测主要观察的是多大压力下系统的性能会变得不可接受,或者白屏崩溃,从而分析系统额瓶颈,为后续优化做参考。

三、协同日历接口性能测试报告

1. 测试结论

此次预发压测3个接口,以UMP线上接口峰值调用量为依据,设置混合压测比例:接口getCalendar、getScheduleList(参数是4个月)、getScheduleList(参数是1周)按1:1:1.5的比例混合压测:

  • getCalendar接口,在30线程并发时,接口平均时间52.14 ms,TP90时间62 ms,TP99时间84 ms,TPS 203.9。该接口UMP线上接口峰值5867次/5分钟,此次压测值相当于线上接口调用量的11.12倍。
  • getScheduleList(参数是4个月),在30线程并发时,接口平均时间52.14 ms,TP90时间54 ms,TP99时间86 ms,TPS 204。
  • getScheduleList(参数是1周),在30线程并发时,接口平均时间36.49 ms,TP90时间46 ms,TP99时间76 ms,TPS 295.4。
    该接口此次压测总体TPS 499,该接口UMP线上接口峰值14469次/5分钟,此次压测值相当于线上接口调用量10倍。

压测过程中,应用服务器CPU资源占用率在43%左右。

2. 风险及建议

测试过程中发现,磁盘写入量太高,制约了系统性能的提升;系统在30线程并发时,达到最优调用量。再增加并发压力到60线程时,性能下降,此时CPU占用40%左右,磁盘写入量却高达60M/S,如下图:

android 压力测试 app 压力测试_压测

建议排查日志内容,减少日志输出量,现在info日志里打印了太多参数信息。

3. Docker配置

服务器 机房 压测机器配置
预发两台docker 汇天 4C 8G

4. 测试执行结果

4.1 总体情况:

30线程并发:

android 压力测试 app 压力测试_压测_02

观察上图发现,当线程并发数从30增加并发压力到60时,TPS数值反而下降。原因为:磁盘写入量太高,线程在等待磁盘IO,制约了系统性能的提升。

4.2 TPS趋势

TPS趋势平稳,系统表现稳定。

30线程并发:

android 压力测试 app 压力测试_线程并发_03

60线程并发:

android 压力测试 app 压力测试_android 压力测试_04

4.3 资源占用

压测过程中,应用服务器CPU资源占用率在43%左右,如下图:

android 压力测试 app 压力测试_移动端_05