小程序server请求微信服务器超时的解决方法


Posted in Javascript onMay 21, 2019

今天有同学在测试小程序的过程中,发现一个问题,调用 微信官方的服务端接口超时 ,比如这个接口,https://api.weixin.qq.com/sns/jscode2session ,因为我们小程序登录的时候,会在自己server端调用微信的API,这个接口超时,导致我们的登录流程也就挂掉了。本来以为是偶尔的网络问题,但是,同学发现在测试服务器上,很稳定的复现超时!但是在我们本地测试过程中,请求微信服务器又很快响应。嗯,理论上微信服务器不会出问题的……

试着在服务器上去 curl 微信的接口,确实挺慢的,我们代码里配置了超时是3秒,目测确实超过了3秒才返回!抱着侥幸的想法,让同学把超时改成5秒,依然超时……嗯,略微有点尴尬。

试着 ping api.weixin.qq.com ,发现收到第一个包,隔着挺长时间,后面的包平均几十毫秒,网络应该也没问题吧。

没办法了,因为是服务端,只能用 curl,想看看这个工具能不能提供一下,整个请求的各个阶段,时间是怎么分布的。搜了一下,还真有这个功能,具体操作如下:

在某个目录下,新建一个文件,比如 curl-format.txt ,内容如下:

time_namelookup: %{time_namelookup}\n
    time_connect: %{time_connect}\n
  time_appconnect: %{time_appconnect}\n
  time_pretransfer: %{time_pretransfer}\n
   time_redirect: %{time_redirect}\n
 time_starttransfer: %{time_starttransfer}\n
          ----------\n
     time_total: %{time_total}\n

在同一个目录下,执行 curl 操作:

curl -w "@curl-format.txt" -o /dev/null -s "https://api.weixin.qq.com/sns/jscode2session?xxx=xxx&xx=aa"

拿到的结果如下:

小程序server请求微信服务器超时的解决方法

在网上查阅了下,各个字段含义如下(单位都是 秒 ):

  • time_namelookup: DNS 域名解析的时候,就是把 https://zhihu.com 转换成 ip 地址的过程
  • time_connect: TCP 连接建立的时间,就是三次握手的时间
  • time_appconnect: SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
  • time_pretransfer: 从开始到最后一个请求事务的时间
  • time_redirect: 从请求开始到响应开始传输的时间
  • time_starttransfer: 从请求开始到第一个字节将要传输的时间
  • time_total: 这次请求花费的全部时间

从上面截图中可以看出,我们服务器上,在DNS域名解析阶段,就花了 5秒 ,难怪会超时了……

找到了问题,那就先在机器上修改 /etc/hosts 文件,写死一个微信域名的IP解析,暂时 把这个问题修复了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 动态添加表格行
Jun 22 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
jquery查找tr td 示例模拟
May 08 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
canvas实现图像布局填充功能
Feb 06 Javascript
js 作用域和变量详解
Feb 16 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
bootstrap datepicker的基本使用教程
Jul 09 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 #Javascript
用node.js写一个jenkins发版脚本
May 21 #Javascript
vue-router源码之history类的浅析
May 21 #Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 #Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 #Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
May 21 #Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 #Javascript
You might like
简单的PHP缓存设计实现代码
2011/09/30 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
Python执行时间的计算方法小结
2017/03/17 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python解包概念及实例
2021/02/17 Python
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
struct与class的区别
2014/02/03 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
回门宴父母答谢词
2014/01/26 职场文书
数学国培研修感言
2014/02/13 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
消防志愿者活动方案
2014/08/23 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
Python图片检索之以图搜图
2021/05/31 Python
python读取mnist数据集方法案例详解
2021/09/04 Python
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript