监控微信小程序中的慢HTTP请求过程详解


Posted in Javascript onJuly 05, 2019

Fundebug 的微信小程序监控插件在 0.5.0 版本已经支持监控 HTTP 请求错误,在小程序中通过wx.request发起 HTTP 请求,如果请求失败,会被捕获并上报。时隔一年,微信小程序插件已经更新到 1.3.1, 而且提供了一个非常有用的功能,支持监控 HTTP 慢请求。对于轻量级的性能分析,可以说已经够用。

本文我们以一个天气微信小程序为例(由bodekjan开发),来演示如何监控慢请求。bmap-wx.js中的weather()函数调用百度地图小程序 api 提供的接口来获取天气预报信息。

监控微信小程序中的慢HTTP请求过程详解

接入监控

由于使用百度的 api,我们无法确认该接口的稳定性,可能有时候会特别慢,导致天气信息显示不出来。于是,我们使用 Fundebug 来监控请求过慢的情况。接下来,我们来演示如何监控慢请求。注册账户后,记得要在创建项目是选择“微信小程序”这一项目类型。

监控微信小程序中的慢HTTP请求过程详解

根据指示完成接入流程:

监控微信小程序中的慢HTTP请求过程详解

在app.js顶部加入下面的代码(记得将 apikey 替换成你自己的):

var fundebug = require("./utils/fundebug.1.3.1.min.js");
fundebug.init({
  apikey: "YOUR-API-KEY",
  monitorMethodCall: true,
  monitorMethodArguments: true,
  monitorHttpData: true,
  setSystemInfo: true,
  setUserInfo: true,
  setLocation: true,
  httpTimeout: 200
});

虽然init()函数只要设置apikey即可使用,但是为了最大程度发挥监控的威力,我们不妨多设置一些监控选项。

微信小程序插件有很多的可配置项,由于涉及到数据,默认处于关闭状态。我们可以监控函数调用(monitorMethodCall),以及函数调用的参数(monitorMethodArguments),监控 HTTP 请求的 Body 中的数据(monitorHttpData),获取系统信息(setSystemInfo)、用户信息(setUserInfo)、地理位置(setLocation)。

监控慢请求

最后,最重要的一步,配置httpTimeout来监控超过特定时长的请求,httpTimeout 类型为 Number,单位为毫秒(ms)。演示起见,我们将时间设置为 200 毫秒。

在微信开发者工具内运行代码,Fundebug 立马收到报错。小程序发往https://api.map.baidu.com/telematics/v3/weather接口的请求时长为 571ms,超过预设时间 200ms。

监控微信小程序中的慢HTTP请求过程详解

错误详情

该请求返回代码 200,表明能够正常获取数据。点击该条错误,查看错误详情:

监控微信小程序中的慢HTTP请求过程详解

通过上方的统计数据,我们可以知道获取天气信息的接口出现缓慢情况的趋势,影响的用户数量,累计发生的次数。我们可以以此来评估是否需要优化该接口,甚至替换成其它第三方接口来解决这个问题。

附加信息

因为配置了 monitorHttpData,所以我们可以查看到请求 body 中的详细数据。当请求失败的时候,有时候需要结合参数来分析失败的原因。

监控微信小程序中的慢HTTP请求过程详解

另外,用户行为数据记录了小程序运行的详细状况,特别是函数的调用序列,对于理解出错前程序的执行逻辑很有帮助:

监控微信小程序中的慢HTTP请求过程详解

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用!

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

Javascript 相关文章推荐
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
javascript实现动态侧边栏代码
Feb 19 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
Aug 19 Javascript
JS鼠标滚动分页效果示例
Jul 05 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
vue.js计算属性computed用法实例分析
Jul 06 Javascript
基于Webpack4和React hooks搭建项目的方法
Feb 05 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 #Javascript
JS Math对象与Math方法实例小结
Jul 05 #Javascript
js字符串类型String常用操作实例总结
Jul 05 #Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 #Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
Jul 04 #Javascript
JS开发常用工具函数(小结)
Jul 04 #Javascript
Vue.js 中的实用工具方法【推荐】
Jul 04 #Javascript
You might like
PHP生成静态页面详解
2006/12/05 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
jquery 手势密码插件
2017/03/17 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
python3对接mysql数据库实例详解
2019/04/30 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
python的sys.path模块路径添加方式
2020/03/09 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
销售高级职员求职信
2013/10/29 职场文书
申报职称专业技术个人的自我评价
2013/12/12 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
爱国影片观后感
2015/06/18 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android