天翼物联网平台(AIoT)通用组件服务提供http数据推送能力,在使用http推送过程中,若发现数据无法正常推送到应用服务器,如何快速定位界定问题初界面呢?此时,可以开启设备消息跟踪功能,根据消息跟踪功能返回的信息,快速辅助定位。
推送目标服务器异常
若在消息追踪页面看到“业务类型-HTTP消息推送”里有一栏信息报红,可点击“详情”进行查看。
如有以下字样:
exception=HTTP_RESPONSE_CODE:404
HTTP_RESPONSE_CODE:403
表明推送请求被禁止,请求资源不存在,平台无法正常访问推送消息,需要检查接收服务处理状态和防火墙配置。
公网IP不存在
若打开消息追踪发现报红,点击详情后看到以下报错:
org.apache.hc.core5.http.ProtocolException:Target host is not specified
或错误信息:
java.net.UnknownHostException:www.xxx.com
这种情况一般是url格式或域名配置错误,需要检查订阅地址填写是否正确。
服务器连接超时
若在消息跟踪里面看到“connection timed out”,这种报错是因为连接接收方的网址超时,需要排查应用服务器的公网地址是否有问题。另外,需要检查本地防火墙,是否将天翼物联网平台(AIoT)通用组件服务的推送出口地址进行了限制或未加入服务器侧白名单,然后进行相应处理,不要限制端口。
消息接收服务器处理超时
当接收到通用组件服务推送的消息后,需固定返回给平台“HTTP 200”,其它返回码平台会认为推送失败。
为了提高消息推送效率,通用组件服务会对接收方处理消息的响应时间进行判断,并以此为主要依据来确定消息推送的优先级,因此接收方收到消息后应对消息进行异步处理,立即返回HTTP响应。
若在消息跟踪的HTTP推送的报错信息中,看到以下字样:
SocketTimeoutException:5 SECONDS
这种错误一般是因为平台5s内未收到消息接收服务器响应,需检查当时服务器状态是否稳定,是否因此导致未能及时回复状态码或是否进行异步处理优化等。
若在消息跟踪中看到以下字样:
Connect to https://www.xxx.com:443
[www.xxx.com/xxx.xxx.xxx.xxx]failed:5 SECONDS
则是服务器地址有误或者状态不可取,可以根据以下几种情况排查:
地址未做IP跳转;
IP被封;
服务器未加平台出口IP;
https使用了http;
路由中转太多;
带宽不够等。
平台重传及暂停推送机制
消息推送支持失败重传机制,推送失败(超时、HTTP返回码不等于200等)的消息,平台最多会重试3次。
若消息接收服务连续失败次数超过100次或者最近10s推送失败率超过10%,平台会认为该服务暂时不可用,标记该消息接收服务处于失败冷却状态,1分钟内不再向该消息接收服务推送消息(这1分钟内的相关消息将不会被推送,但Saas的"设备增加删除"类型的消息会继续推送)。
若在消息跟踪里面看到“http推送目的地服务异常,处于推送冷却时间60秒内,直接记录日志,不推送”“冷却状态首次推送失败,不重试”“http推送冷却时间已过,但目标服务器状态尚未返回,不推送”等字样,就需要检查当时服务器是否运行正常,响应回复是否及时。
有上报无推送
当发现平台“消息查看”有数据上报,而接收端服务器和消息追踪里面并无推送信息时,这种情况下需要去“订阅管理”查看是否添加订阅推送信息。
如图,如果未勾选设备数据变化通知,那么数据将不会推送,这时候需要将设备数据变化通知勾选,输入正确的订阅地址后并添加。
如果发现消息追踪的报错信息都不在以上几种,请联系运营支撑人员进行查询。
此外,平台支持产品级订阅和设备级订阅功能。如果一个设备同时添加了产品级,那么都会推送。
以上就是http推送失败后定位的一些小方法,快来get吧!
领取专属 10元无门槛券
私享最新 技术干货