监控微信小程序中的慢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 相关文章推荐
Javascript的一种模块模式
Mar 22 Javascript
JQuery 常用操作代码
Mar 14 Javascript
JavaScript去掉数组中的重复元素
Jan 13 Javascript
jQuery Jcrop插件实现图片选取功能
Nov 23 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
vue axios请求超时的正确处理方法
Apr 02 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 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实现用session来实现记录用户登陆信息
2018/10/15 PHP
浅谈Javascript事件模拟
2012/06/27 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python3计算三角形的面积代码
2017/12/18 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
房产销售经理职责
2013/12/20 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
大一新生检讨书
2014/10/29 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技