监控微信小程序中的慢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 相关文章推荐
一个小型js框架myJSFrame附API使用帮助
Jun 28 Javascript
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
常用的9个JavaScript图表库详解
Dec 19 Javascript
Spring Boot/VUE中路由传递参数的实现代码
Mar 02 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
Oct 09 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
原生js实现瀑布流效果
Mar 09 Javascript
Vue路由切换页面不更新问题解决方案
Jul 10 Javascript
js实现随机点名功能
Dec 23 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
轻松实现python搭建微信公众平台
2016/02/16 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
python多维数组切片方法
2018/04/13 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
手术室护士长竞聘书
2014/03/31 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
秋季运动会加油词
2015/07/18 职场文书
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android