个推延迟收到消息问题原因分析

原创 2015年11月20日 19:12:06

1.    客户端断网,导致客户端和个推服务器之间长连接断掉,需要网络恢复后并且建立长连接时才能收到个推的透传,建立连接最快要2秒的时间。在网络时断时续的情况下要比http请求的响应慢的多。若出现网络通而不达的情况,90秒以后才能确定这种网络异常,而http请求一般在设置的超时的时间内就返回了超时的结果(http的超时的时间一般设置的是10秒或20米,默认时间是30秒)。

2.    个推服务器消息排队延迟。毕竟免费的个推是N多人用一个服务,传说6亿活跃用户就是用负载均衡调度的时间也不慢,更慢的是就给你的消息分配了处理服务器,那还要在这个服务器排很长的队,这就决定了它快不起来。当然管理这么巨大的消息队列也很艰巨。个推虽然做到了消息基本不漏发,但是它的代价也是超大的。这就造成了没有发送成功的需要重复多次发送和确认发送成功,让本来消息队列就超长的情况更糟糕,一般有新消息不断加入进来,又有发送失败的消息加入进来。这样就进一步增加了消息的延迟。并且这种消息发送失败不断循环发送的机制也造成了,它很容易遭到攻击,一旦个推服务器遭到攻击,会有更大量的消息步断涌入,造成消息的严重延迟。虽然个推做了这种恶意消息的自动检测机制,但是当发现后再处理也是需要时间的。上次由于个推的问题就造成,10分钟才绑定个推成功的情况,很多透传消息延迟好久。当然个推也有一个bundle Identifier每年2万元的付费服务,据说能够减少在第二个环节在分配到的服务器前排队的问题。但是调度的时间开销还是要负担的。个推客户说的一个付费的用户一个服务,具体如何也不太清楚,不过肯定不是一个用户一台电脑,而是像阿里云一样的域名服务器(它本来就叫云推送)。个推云推送的透传大多数的推送速度还是很快的,快过htttp请求的速度。显然很多app的用户互相踢出机制大都使用个推的透传或个推的远程推送(苹果APNS),发现帐户被在其它设备登录要比发http请求时发现更快和实时。对不稳定网络环境,晚上下班高峰使用云推送密集时间段,服务器被攻击时,消息延迟很严重。

3.    服务器和个推之间的网络异常,需要个推和服务器恢复时间,导致服务处理成功,但是消息却没有及时发送到服务器。

 

 

除了透传(常规长连接)另一个更大范围使用的远程推送。透传的好处是更及时,远程推送的好处是用户不启动应用也能被推送活动消息。

通过苹果的APNS(它是苹果服务器和开机的iphone建立的一个长连接,个推的远程推送最终也是通过APNS推送来实现),当然通过远程推送的消息速度比透传慢的多,好处是可以在用户不开启应用的情况下,可以给用户推广告信息,活动信息,大部分对实时要求不高的消息推送用的都是远程推送,几乎所有应用都开启了远程推送,并且大部分应用都是使用的是个推的远程推送,也有的是直接使用苹果APNS。苹果不支持透传。

若你的应用对个推很依赖,那么只能等个推绑定成功才能自动登录或登录了不幸的是,有时候个推绑定回来的消息很慢,那么职能等了,通常个推不能在2秒内绑成功,那么通常要等1分钟左右,少数异常情况要等3到10分钟。若登录时不等待个推绑定成功的小,若需要用到个推时,它不给你返回,那么你的业务可能异常(如你接个单,结果乘客立刻取消了订单,你个推还没建立好连接,那么你就要等它建立好才能收到了,那么你得到个推消息就及时了),若你等待它绑定成功再进入那么有几率进入漫长的登录等待过程。

 

个推是第三方做的,app是自己做的,你只能收这种消息,无法帮助他们处理各种异常,如:若发现网络异常或经常闪断是发送http请求来确认。所以要处理各种异常和确认,不绑定成功能够进入并且接单,收到实时推送消息,那么最好是不用个推,实现自己的长连接。


个推的推送消息延迟的一个原因记录

个推的一个小问题,刚刚发现,赶紧记录下来,开发自测的时候,推送来的很快, 但把连接的服务器从后台开发的主机(A)切换到公司的内测服务器(B)时, 推送会晚来好几分钟。 检查了一遍集成代码和配置文...

IOS使用个推前台可以收到推送消息后台收不到

IOS使用个推前台可以收到推送消息后台收不到,配置不做过多说明,请查看官方文档。主要在这里记录我遇到的两个大坑。 1,根据个推的文档进行配置 2,保证证书环境正确 3,查看个推常见问...
  • hxk1224
  • hxk1224
  • 2017年05月04日 12:33
  • 3525

消息透传,本地却查不到?..踩坑经验--

起因前两天一个内部版app上线..结果悲剧了… 这版主要是新增消息部分. 通过使用个推来完成消息送达…版本上线后出现了几个状况: 1.部分用户收不到通知.(无 APNS通知 ,无 透传消息.) ...

透传消息和非透传消息

目前的消息推送方式主要有两种:通知和透传。 什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。透传消息...

笔记66--消息推送之个推

一、客户端 二、服务端常见误区
  • mwj_88
  • mwj_88
  • 2014年07月25日 18:00
  • 16009

个推 透传推送,带参数

用户可以在事件触发的回调中获取“PushMessage”对象,如发送的是普通消息可以在对象中获取推送消息的“title”属性和“content”属性的值,消息为透传消息,则可以获取“payload”属...

文章4:multipart/form-data详细介绍

转载请注明出处 http://blog.csdn.net/yankai0219/article/details/8159701 主要内容 1.什么是Multipart/form-dat...

手机端的app推送消息(个推)

  • 2017年11月13日 14:24
  • 1.91MB
  • 下载

个推群消息发送 错误

  • 2016年01月29日 12:57
  • 7.52MB
  • 下载

H5+个推实现消息推送服务

网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息。 首先,在个注册个账号,开发阶段使用个人注册即可,个推注册地址 注册完进入配置页面,对应用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:个推延迟收到消息问题原因分析
举报原因:
原因补充:

(最多只允许输入30个字)