微信公众号接口失败率居高不下(60%+),怎么解决?

慢慢成长 发布于 2016/05/03 14:03
阅读 955
收藏 0

如题!

详细情况:微信公众号接口调用失败率在3月7日以后一直居高不下,平均耗时也是各种增加(基本上都在1s以上,正常的时候都是几十毫秒),但是3月7日前后,服务器并没有进行部署新代码之类的操作,不知何故就出现这现象,到现在也是一直异常,详细截图如下

正常情况:3月7日以前基本上没什么失败率

异常情况:3月7日以后,失败率开始居高不下


平均耗时也是蛮高(异常的时候都在1秒以上)

尝试过单独调用服务器接口,请求和耗时都是正常的,但是通过微信公众号来走,现在就是这种现象,不知道有没有什么好的方式来定位这种现象并解决,望有类似处理经验的OSCER能指教、支招

加载中
0
慢慢成长
慢慢成长
没有人来回答呀。。。。
慢慢成长
慢慢成长
回复 @温柔小水枪 : 查服务器的网络负载具体是查些什么指标呢?
温柔小水枪
温柔小水枪
如果是微信公众平台访问你的连接 其实多半是因为网络波动造成的,还有就是DNS 的问题。。。国外的一些域名供应商提供的解析在国内经常出现 无法解析的情况,我是经常遇到!不晓得是个例还是通病。。。
温柔小水枪
温柔小水枪
找到失败情况下的原因,是超时 还是其他神马原因,原因找到了 才有相应的解决方法
温柔小水枪
温柔小水枪
检查一下 你服务器的网络负载情况
0
温柔小水枪
温柔小水枪

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

前面的 netstat -n是netstat的命令,window和linux都可以用,结果显示内容差不多

后面的 awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 是linux下的命令

 

运行这一句之后,显示的结果类似如下:

TIME_WAIT 27       
FIN_WAIT1 435
FIN_WAIT2 89
ESTABLISHED 82
SYN_RECV 64
CLOSING 4
LAST_ACK 90

 

这些结果代表啥意思呢?如下:

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
ESTABLISHED:代表一个打开的连接
SYN-RECV:再收到和发送一个连接请求后等待对方对连接请求的确认
SYN-SENT:再发送连接请求后等待匹配的连接请求
CLOSING:等待远程TCP对连接中断的确认
CLOSED:没有任何连接状态
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
LISTEN:侦听来自远方的TCP端口的连接请求

上面是百度滴。。。。。。具体多大的数字算正常 要看你服务器的配置了。。实在是不懂就 建议你可以忽略这个检测

PS:最好是先找到失败的原因 是超时导致的失败 还是无法连接服务器DNS的解析失败)导致的失败

把你的接口改成直接返回一个最简单数据 如果情况好了 说明是超时,如果还是这样 再来考虑其他的问题,如果没有什么头绪 只能一个一个试

你说到单独调用接口正常 只能说明你的程序没有报错,还要看响应时间的,微信对接口的响应是有时间要求的,之前好像看到这样要求,至于是多少忘了。

你可以PIng一下 微信提供那个接口的域名 看看响应速度和掉包率。。。。。(不知道微信的服务器屏蔽了ping没)

慢慢成长
慢慢成长
非常感谢你的认真回复,我试试先,主要就是现在定位问题有点麻烦,特别是表现在,部分关注了公众号的账户,给公众号发消息,公众号全部提示“该公众号暂时无法提供服务,请稍后再试”,但是又有另外一部分用户给公众号发消息,随便怎么发都能正常响应,所以现在就奇了怪了。。。只能慢慢一种情况一种情况尝试了,再次表示感谢
0
温柔小水枪
温柔小水枪

http://tool.chinaz.com/speedtest.aspx 测速

http://ping.chinaz.com/ 超级PING

来给你两个地址  测速多个地方访问你的服务器速度及响应时间

0
慢慢成长
慢慢成长

继续跟踪该问题:

出问题环节是:微信公众号后台接收到用户在微信客户端发送的消息的时候没有成功转发请求至自定义的消息处理服务,连请求都没有发起

已做的调整方式:

在另外一台服务器上使用nginx进行请求转发,即在微信公众号的配置处,填写nginx所在的服务器,然后微信公众号后台和自定义消息处理服务之间通过nginx来转发请求和响应,居然成功了,以前被异常的那些用户都可以正常和公众号发消息了

猜测:还是由于微信公众号后台服务器 与 自定义消息处理服务器之间的网络问题导致,已联系我司运维人员查看定位

返回顶部
顶部