app目前现状
目前app只有一些埋点操作,还有一些上传日志的相关措施,但是没有队app的接口进行相应的监控,这个对于一点出现的问题不容易分析其原因?举个例子,目前来说,就算有日志上报,也不能很好地定位到问题,如果某个接口出现了访问不到,报了超时的日志,这个时候其实是不好定位的,除非真的有一些很明确的操作,类似,1003(dns解析不到)等错误,但是有可能也是弱网的情况下,所以我们需要收集的指标应该不单单上传error而已,这也就是为什么需要采集某些接口数据上报,达到之后分析,排查问题的一个原因!
导致接口请求失败的因素
里面大致包含两种可能因素
- 硬性且不可改善因素
- 1.用户手动对iOS对app网络层访问权限无情剥削(控制不可访问该应用、强制飞行模式、无网络链接等)--------采取适当的方式提示,目前app应用中有此项措施
- 2.路由器故障(这个连提示都无法提示)
尚且可以改善的因素 - 蜂窝或者Wifi信号的强弱(尝试手机信号格数)
- 运营商局部节点存在障碍
- DNS 解析问题
- 业务服务器故障或者接口响应慢(并发性,代码层都有可能)
- 数据库服务器 (数据服务器出现问题,或者业务服务器去访问数据库服务器的时候,慢查询导致超时)
对于这两种大概因素,不可改善的只能尝试提示引导,重启路由器或者更换4G,或者去到环境好点的网络空间等,而对于另外可以改善的因素,通过网络监控库对接口数据上传,待有数据分析之后方能给出相应的措施,下面的措施只是大概一种处理思路
网络库针对失败情况的处理措施
前面说到过,为了提高网络请求成功率,需要建立监控体系,使得可以收集到足够的数据,这样才能有效发现导致网络失败的原因,从而解决问题,下面先尝试的给出几种措施先:
手段1.https 请求失败时候,重新发起一次http请求(防止ssl错误,可以配置1~3次)。
手段2:手段1失败之后尝试将域名更改为ip直连,通过配置直连ip来控制重试次数。(URI 不变,Host改为ip,避免dns解析错误,但是需要运维人员配置好公司的服务器支持ip直连)。
流程图大概如下:
HTTPS请求:涉及到ssl过程,也就是涉及到非对称加密和对称加密过程,过程复杂,需要消耗的时间较长
HTTP请求:少了ssl过程,加快响应过程
IP直连:直接去掉了DNS解析的过程,更快
数据包的大概流程如下
网络请求成功率因素
- 适当的超时设置
- 接口请求集中度
- 接口数据体积
- 统计的指标参数
- 状态码,网络响应时间,HTTP与HTTPS的DNS解析,TCP握手,SSL,网络信号强度,ping时间
参数key | 参数含义 |
---|---|
ti | 单词请求的唯一标识id |
rip | 重定向ip |
ress | 返回包大小 |
reqs | 请求包大小 |
rdsize | 实际下载大小 |
osize | 原始文件大小(字节) |
omd5 | 原始md5信息 |
oip | 原始ip |
dsize | 下载成功文件的大小 |
dmd5 | 下载成功文件的md5信息 |
ddata | 返回包 |
cty | mimeType |
*wtt | 响应报文首字节到达的时间 |
*ttt | 请求总耗时 |
*state | 请求结果:success,failure,cancel |
*sslt | ssl的时间 |
*sreq | 请求开始时间 |
*signal | 信号强度 |
*sdt | 从客户端发送htp请求到服务器所消耗的时间 |
*sc | 状态码 |
*rurl | 重定向url |
*rcvt | 客户端从开始接收数据到接收完所有数据的时间 |
*pd | ping域名的响应时间 |
*ourl | 原始url |
*ope | 运营商 |
*ns | 网络类型 |
*etp | 错误类型(1网络错误,2http错误,3业务错误) |
*eres | 响应结束时间 |
*ed | 错误描述 |
*ec | 错误码 |
*dnst | 域名解析时间 |
*dBm | 无线信号的强度单位 |
*cnnt | 与服务器建立tcp链接需要的时间 |
*cmd | 接口描述 |
*apn | 当前接入点名称(wifi,cmwap) |
*airplane | 是否飞行模式 |
*标明字段意思是需要上报的数据,其他的可选,因为公司目前没有专门的移动平台监控,所以目前这些字段通过json字符串上传到阿里云中
统计时机:请求接口失败之后上传数据
某些参数解释
dbm是无线信号的强度单位。
信号强度
-30dBm 极好 这是可实现的最大信号强度,适用于任何一种使用情景
-50dBm 极好 此极好的信号强度适于各种网络使用情形
-65dBm 非常好 建议为智能手机和平板电脑提供支持
-67dBm 非常好 此信号强度对于网络电话和流媒体视频的使用是足够的
-70 dBm 可接受 该等级是确保实现稳定的数据包传输的最低信号强度要求,对于网页冲浪和收发邮件的使用是足够的
-80 dBm 不良 实现基本连接,但数据包传输不稳定
-90 dBm 非常差 大多都是噪音,抑制大多数功能的实现
- 100 dBm 最差 全是噪音
后端响应错误码
-1 未知错误
-1000 错误URL
-1001 超时
-1002 不支持URL
-1003 找不到主机,DNS解析错误
-1004 无法连接到主机
-1103 数据长度超过最大值
-1005 网络连接丢失
-1006DNS查询失败
-1007 HTTP重定向太多
-1008资源不可用
-1009 未连接到互联网的NSURL错误
-1010 重定向到不存在的位置
-1011 服务器响应错误
-1012 用户取消身份验证
-1014 0字节资源
-1015无法解码原始数据
-1016无法解码内容数据
-1017无法解析响应
-1100 文件不存在
-1101 文件目录
-1102 没有权限读取文件
-1200 安全连接失败
-1201 服务器证书错误日期
-1202 服务器证书有未知的根
-1204 服务器证书无效
-1205 客户端证书拒绝
-1206 客户端证书要求
-2000 无法从网络加载
-3000 无法创建文件
-3001 无法打开文件
-3002 无法关闭文件
-3003 无法写入文件
-3004 无法删除文件
-3005 无法写入文件
-3006 下载解码失败中
-3007 下载解码失败
现在操作:
目前打算统计的接口有登录接口和进入课堂前https请求的接口:
待补充
将来操作:
- 统一网络库网络库
- 网络统计模块
- 网络诊断模块
- HTTPDNS
- 弱网检测模块( Facebook 的弱网检测)