微信开发之报警排查
概要说明 微信公众平台已对外开放接口报警,当微信服务器向开发者推送消息失败次数达到预定阈值时,会将报警消息发送到指定微信报警群中(设置方式:公众平台->开发者中心->接口报警),请开发者积极主动关注报警,即时解决故障,提高微信公众号的服务质量。 为了更好地根据报警信息尾部的实例(提供了openid及时间戳stamp)进行问题排查,开发者需要在接入层、逻辑层等每一个层级都加上包含关键信息的详细日志,以利于快速定位问题。 报警目前有2类: 1.通用报警,所有开发者都需要关注。 2.公众号第三方平台报警,只有在微信开放平台(open.weixin.qq.com)上申请成为公众号第三方平台的开发者,才需要关注此报警。 下面对具体的报警做示例以及排查指引说明。 报警内容说明 报警内容描述: a)appid:公众号appid 一般情况下,通过报警提供的IP,时间,消息类型,能够比较快速的定位到第三方发生问题的原因。 报警示例1:超时报警 Appid: wxxxxxx 该报警表示:微信服务器向开发者推送取消关注事件时,开发者没有在5秒内返回结果。在2014-12-01 20:12:00-2014-12-01 20:17:00这5分钟内发生了1272次。其中这5分钟内第一次发生超时的时间是:2014-12-01 20:12:00, 开发者的IP是:203.205.140.29,事件类型是取消关注事件。 报警示例2:回应失败 Appid: wxxxx 该报警表示:微信服务器向开发者推送自定义菜单点击事件时,开发者的返回结果不合法。在2014-12-01 20:12:00-2014-12-01 20:17:00这5分钟内发生了1320次。其中这5分钟内第一次发生回应失败的时间是:2014-12-01 20:12:00, 开发者的IP是:58.248.9.218,事件类型是点击菜单事件,第三方返回的内容长度为10个字节,内容为“Error 500:”。 报警示例3:连接超时 Appid: wxxxx 该报警表示:微信服务器向开发者推送粉丝发来的文本消息时,无法连接到开发者填写的服务器地址。在2015-02-04 20:13:09-2015-02-04 20:18:00这5分钟内发生了7289次,这5分钟内第一次发生连接超时的时间是:2015-02-04 20:13:09, 开发者的IP是:180.150.190.135,事件类型是用户推送的消息。 各类报警的排查方法 1.DNS失败 该错误为微信服务器在推送消息给开发者时,解析dns失败。如遇到此报警,请开发者确认: a)填写的url,域名是否有误; 如果不是以上2个问题,请联系微信公众平台。 2.Dns超时 目前不会有此错误。 3.连接超时 该错误是微信服务器和开发者服务器3S内未连接成功。报警消息会提供出首次发生连接失败的时间和连接的IP。如遇此报警,请开发者确认: a)该IP是否有误。 4.请求超时 微信服务器向开发者服务器推送消息或事件,开发者5秒内没有返回。请求超时时,报警消息会提供第一次出现请求超时的时间,开发者IP和消息类型。请开发者确认: a)该IP是否有误 5.回应失败 开发者没有按照wiki中的回复消息格式进行回复消息,或者发生网络错误,会报警回应失败,报警消息会提供第一次出现请求回应失败的时间,开发者的IP,消息类型以及回应的消息内容,请开发者确认: a)该IP是否有误 6.MarkFail(自动屏蔽) 微信后台会实时统计开发者的失败次数。在推送消息给开发者发生大量失败时,微信服务器会自动屏蔽开发者,1分钟内不再推送任何消息,并会发送报警到微信群。此报警是级别最高的报警,开发者在收到此报警时请尽快处理后台故障,恢复服务。事实上,开发者在收到此报警前,必然会收到连接超时,请求超时或回应失败等报警,需要开发者即时去解决这些故障,避免被微信服务器屏蔽,严重影响公众号服务! 7.推送component_verify_ticket超时 & 8.推送component_verify_ticket失败 & 9.推送组件消息超时 & 10.推送组件消息失败 以上4个报警只有公众号第三方平台开发者会收到,其他公众号开发者无需关注。由于公众号第三方平台承载了更多的公众号,所以公众号第三方平台的服务质量需要更严格要求和报警,所以把这4个特殊的事件单独报警。具体的问题查找方式与4,5是一样的,这里不在赘述。关于公众号第三方平台的具体申请与开发实现,请前往微信开放平台(open.weixin.qq.com) 常见问题 1.如何排查DNS失败的问题? 1.Ping测试你们MP上配置的url里的域名,确认是否能够得到正确的IP。如不能得到或者错误,请到你们的域名托管商管理系统上检查配置。 2.如何解决连接超时问题? 1.查看是否网络环境问题。 worker_processes 16; //CPU核数error_log logs/error.log info; //错误日志logworker_rlimit_nofile 102400; //打开最大句柄数events { worker_connections 102400; //允许最大连接数}//请求日志记录,关键字段:request_time-请求总时间,upstream_response_time后端处理时 间log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$host" "$cookie_ssl_edition" ' '"$upstream_addr" "$upstream_status" "$request_time" ' '"$upstream_response_time" '; access_log logs/access.log main; 3.如何解决请求超时问题? 每个模块都需要有完整的日志,能够查出每个请求在每个模块的耗时信息,配合微信报警提供信息,能够很容易的定位到是哪个服务器出问题。常见的原因是: 1)机器负载太高,耗时增加 4.如何解决access_token存储和使用问题? 经常有第三方反馈access_token造成服务中断的问题,公众平台排查问题发现,大部分第三方都在疯狂刷新access_token,使得access_token超出接口频率限制而失效。 这里提供一个较为简单的access_token 存储和使用方案。 1)中控服务器定时(建议1小时)调用微信api,刷新access_token,将新的access_token 存入mysql(或其他存储), 公众平台会保证在access_token刷新后,旧的access_token在5分钟内仍能使用,以确保第三方在更新access_token时不会发生第三方调用微信api的失败。 【相关推荐】 1. 特别推荐:“php程序员工具箱”V0.1版本下载 2. 微信公众号平台源码下载 3. 微信投票源码下载 以上就是微信开发之报警排查的详细内容,更多请关注php中文网其它相关文章! |
- 上一篇:微信开发之获取服务器IP
- 下一篇:自定义菜单创建接口