网站监控笔记(一) — Performance

news/2024/5/8 20:13:29/文章来源:https://blog.csdn.net/Crazymryan/article/details/113533530

What is website monitoring?

什么是网站监控?其实我们主要是实时监控网站性能,是否存在异常资源请求、代码出错 、页面加载消耗时长 等 一系列问题!如果出现这些问题,你能不能及时定位问题原因? 在之前的 《如何优化祖传代码》 这篇文章中我也有讲到客户流失率,感兴趣的同学可以去看看。只不过是针对于网页打开速度的,那如果你页面请求资源都错误了如 js、css、request 发生错误了呢?不能及时定位问题,那岂不是GG了。主要是最近一直在考虑做一个性能监控产品,老严也是特别在乎这一块的内容。

主要作用

  • 测DNS污染检测

  • 网站打开速度检测

  • 网站资源出现异常

  • 感知到业务出错的概率

  • 发布后对性能有否存在影响

  • 了解业务的稳定性

  • 对访问用户进行分析

如何做?

  1. 网站性能监控

  2. 监控资源异常

  3. 借助辅助插件

  4. 后台记录日志

  5. 使用监控平台

  6. 捕捉异常代码

  7. 资源阻塞处理

今天我们来讲解一下 第一个性能监控(主要是围绕 js 中 performance api讲解),因为关乎性能方面东西确实太多了

Go!

网站性能监听

什么是 performance ?

我们可以先了解一下 Performance [0],做网站监控必备之一

MDN 这样描述 Performance :

Performance 接口可以获取到当前页面中与性能相关的信息。它是 High Resolution Time API 的一部分,同时也融合了 Performance Timeline API、Navigation Timing API、 User Timing API 和 Resource Timing API。

performance 属性

先看看是个啥东西

console.log(window.performance)

可以看到输出了 Performance 对象,里面包含了几个属性,分别是

  1. memory  预期跨浏览器支持不佳。

// 上下文内可用堆的最大体积,以字节计算。
jsHeapSizeLimit
// 已分配的堆体积,以字节计算。
totalJSHeapSize
// 当前 JS 堆活跃段(segment)的体积,以字节计算。
usedJSHeapSize
  1. eventCounts 预期跨浏览器支持不佳。


  1. timing

  2. navigation

  3. timeOrigin

  4. onresourcetimingbufferfull

因为 memory与eventCounts 的支持性不是很好,所以我们先略过,感兴趣的朋友可以去 MDN 瞧瞧

那我们接下来将这四个

  • timing

  • navigation

  • timeOrigin

  • onresourcetimingbufferfull

performance.timing

timing 是个啥玩意?

接着打印一下看看

大家也可以配合这张图来看看,会更加深入的理解

performance .timing 对象包含延迟相关的性能信息。

因为东西太多,我们分离一些重要的信息出来讲解

let t = performance.timing;
页面加载完成所耗时间 = t.loadEventEnd - t.navigationStart;
解析 DOM树 时间 = t.domComplete - t.responseEnd;
资源加载完成时间 = t.responseEnd - t.requestStart
TCP建立连接完成时间 = t.connectEnd - t.connectStart

作用:可以监听这些数值,判断网页加载性能

虽然现在好像要废弃了,但是现在还是可以用的

performance.navigation

还是来打印一下

第一个是 redirectCount 是重定向次数

第二个是 type 判断是页面是从哪里加载的

type
//0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载
//1:网页通过“重新加载”按钮或者location.reload()方法加载
//2:网页通过“前进”或“后退”按钮加载
//255:其他来源的加载

作用:可以用作统计网页访问方式及来源,以及是否重定向

performance.resourcetimingbufferfull

属性是一个在resourcetimingbufferfull事件触发时会被调用的 event handler 。它的值是一个手动设置的回调函数,这个回调函数会在浏览器的资源时间性能缓冲区满时执行。

官方例子

function buffer_full(event) {console.log("WARNING: Resource Timing Buffer is FULL!");performance.setResourceTimingBufferSize(200);
}
function init() {// Set a callback if the resource buffer becomes filledperformance.onresourcetimingbufferfull = buffer_full;
}
<body onload="init()">

performance 方法

方法也是很多的,大家可以看看

我们也挑几个出来遛一遛

performance.now()

返回当前到页面打开时刻的耗时,精确到千分之一毫秒

performance.now()

作用:监控页面资源请求耗时

performance.getEntries()

对网页发起的所有HTTP请求耗时信息统计后,以数组方式返回

performance.getEntries()

作用:监控请求资源请求耗时

performance.mark()

建立测速标记

performance.mark("mySetTimeout-start");

performance.measure()

用于计算标记之间的时间戳

performance.measure("mySetTimeout","mySetTimeout-start","mySetTimeout-end"
);

performance.clearMarks()

清除测速标记

performance.clearMarks();

小demo

引用官网例子

// 以一个标记开始。
performance.mark("mySetTimeout-start");// 等待一些时间。
setTimeout(function() {// 标记时间的结束。performance.mark("mySetTimeout-end");// 测量两个不同的标记。performance.measure("mySetTimeout","mySetTimeout-start","mySetTimeout-end");// 获取所有的测量输出。// 在这个例子中只有一个。var measures = performance.getEntriesByName("mySetTimeout");var measure = measures[0];console.log("setTimeout milliseconds:", measure.duration)// 清除存储的标记performance.clearMarks();performance.clearMeasures();
}, 1000);

输出

作用:可以计算某段代码执行速度

总结一下

我们在以上的对 performance 的简单了解之后我们可以选择自己需要监控的数据,如xxx资源加载太慢或是页面加载速度进行上报,并记录 log 上报,进行进行日数据归档。下一篇将会讲,如何监听网站资源异常。

实战一波

我们将前面讲到的所需的可以写成一个监控函数返回一个对象,然后执行上报[1]

function getPerformanceTiming() {var performance = window.performance;var t = performance.timing;var gather = {};//【重要】页面加载完成的时间//【原因】这几乎代表了用户等待页面可用的时间gather.loadPage = t.loadEventEnd - t.navigationStart;//【重要】解析 DOM 树结构的时间//【原因】反省下你的 DOM 树嵌套是不是太多了!gather.domReady = t.domComplete - t.responseEnd;//【重要】重定向的时间//【原因】拒绝重定向!比如,http://example.com/ 就不该写成 http://example.comgather.redirect = t.redirectEnd - t.redirectStart;//【重要】DNS 查询时间//【原因】DNS 预加载做了么?页面内是不是使用了太多不同的域名导致域名查询的时间太长?// 可使用 HTML5 Prefetch 预查询 DNS ,见:[HTML5 prefetch](http://segmentfault.com/a/1190000000633364)            gather.lookupDomain = t.domainLookupEnd - t.domainLookupStart;//【重要】读取页面第一个字节的时间//【原因】这可以理解为用户拿到你的资源占用的时间,加异地机房了么,加CDN 处理了么?加带宽了么?加 CPU 运算速度了么?// TTFB 即 Time To First Byte 的意思// 维基百科:https://en.wikipedia.org/wiki/Time_To_First_Bytegather.ttfb = t.responseStart - t.navigationStart;//【重要】内容加载完成的时间//【原因】页面内容经过 gzip 压缩了么,静态资源 css/js 等压缩了么?gather.request = t.responseEnd - t.requestStart;//【重要】执行 onload 回调函数的时间//【原因】是否太多不必要的操作都放到 onload 回调函数里执行了,考虑过延迟加载、按需加载的策略么?gather.loadEvent = t.loadEventEnd - t.loadEventStart;// DNS 缓存时间gather.appcache = t.domainLookupStart - t.fetchStart;// 卸载页面的时间gather.unloadEvent = t.unloadEventEnd - t.unloadEventStart;// TCP 建立连接完成握手的时间gather.connect = t.connectEnd - t.connectStart;// 请求资源集合gather.requestResources = performance.getEntries()return gather;
}

注解地址

[0] https://developer.mozilla.org/zh-cn/docs/web/api/performance

[1] https://blog.csdn.net/p312011150/article/details/93748456

最后

如有错误,望各位不吝赐教。 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_783468.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

2019独角兽企业重金招聘Python工程师标准>>> 一、Apache ①、通过修改 .htaccess 文件 修改网站目录下的.htaccess&#xff0c;添加如下代码即可(2 种代码任选)&#xff1a; 可用代码 (1)&#xff1a; RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (^$|FeedDem…

见多识广:CodePen项目网站简介

见多识广&#xff1a;CodePen项目网站简介 by zhangxinxu from http://www.zhangxinxu.com 本文地址&#xff1a;http://www.zhangxinxu.com/wordpress/?p2499 一、CodePen是干嘛的&#xff1f; CodePenclick for visit!顾名思意&#xff0c;codepen, 即“代码笔”&#xff0c…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

postgre sql 括字段_啥?我写的一条SQL让公司网站瘫痪了...

【51CTO.com原创稿件】一条慢查询会造成什么后果?之前我一直觉得不就是返回数据会慢一些么&#xff0c;用户体验变差?图片来自 Pexels其实远远不止&#xff0c;我经历过几次线上事故&#xff0c;有一次就是由一条 SQL 慢查询导致的。那次是一条 SQL 查询耗时达到 2-3 秒「没有…

Nginx配置网站适配PC和手机

背景 访问同一个域名&#xff0c;需要实现在电脑访问时&#xff0c;访问电脑版&#xff0c;在移动端访问时&#xff0c;访问手机版。 传统的做法可能是进入一个页面时&#xff0c;判断屏幕宽度&#xff0c;根据宽度显示电脑版还是手机版&#xff0c;其实Nginx也可以完成这个判…

如何访问局域网的网站【路由器设置端口映射】

转载请注明出处。 原文作者&#xff1a;宋发元 原文链接&#xff1a;http://blog.csdn.net/u011019141/article/details/53709668 一直以来&#xff0c;在开发中我都使用花生壳对内网的地址做映射&#xff0c;以此达到访问内网的网站资源。但是这之间经过花生壳转发这一折腾&…

概要设计 重要性_深度剖析外贸网站设计必须要做的SEO关键词布局 - 外贸老船长强烈推荐...

外贸网站设计最全面的SEO优化布局导读&#xff1a;设计高质量的外贸营销型网站其中关键词布局优化非常重要&#xff0c;如果你的外贸网站仅仅是设计的很美观好看&#xff0c;但是关键词没有做优化布局的话&#xff0c;相当于一个“花瓶”&#xff0c;客户搜索不到你的网站&…

毕业设计html旅游网站,毕业设计--旅游网站的设计与实现(论文)

毕业设计--旅游网站的设计与实现(论文) 旅游网站的设计与实现旅游网站的设计与实现 论文论文 学 生 姓 名 ** 学 号 专 业 班 级 计算机网络 指 导 教 师 123 I 摘 要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域…

反向索引和自增索引区别_网站建设SEO优化和SEM搜索引擎营销,区别与联系全在这里了...

经常会有人问网站建设SEO优化和SEM搜索引擎营销到底存在什么关系&#xff0c;我找了一个做优化的是不是就可以不再招sem人员了?也有一部分新入行的小伙伴也常常会混淆他们之间的关系&#xff0c;所以我决定一次性把这个问题真正的讲清楚&#xff0c;说透彻。一、什么是SEO优化…

火星浏览器_【工具网站】火星个人导航

现在已存在的网站已经超过十亿&#xff0c;(同时每时每刻也有网站在不断诞生和消失)。有许多网站可能已经融入我们的生活&#xff0c;给我们带来价值&#xff0c;但是也有一些网站可能你都没用过&#xff0c;甚至没听说过。别人不知道的&#xff0c;如果自己知道了&#xff0c;…

网站下面的文件找不到_收藏好这些网站应该没有找不到的字体了!

字体对于一幅设计作品的重要性应该是无需多言了。不同的字体&#xff0c;对应着不同的气质&#xff0c;也就对应着不同的设计风格。但有时候我们费劲千辛万苦也找不到一款合适的字体&#xff0c;甚至都不知道应该去哪里找&#xff01;这可不蛋疼吗&#xff0c;再找不到好看的字…

阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程

阶段一、单机构建网站网站的初期&#xff0c;我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器&#xff0c;如tomcat、jetty、jboos&#xff0c;然后直接使用JSP/servlet技术&#xff0c;或者使用一些开源的框架如mavenspringstructhibernate、mavenspringspri…

无法从该网站添加应用_降低跳出率的9个网站设计技巧

在登陆网站的前几秒钟内&#xff0c;用户决定是否要进一步滚动或退出该网站。一种强大的Web设计是一种鼓励用户留在网站上而不跳到其他网站的设计。要创建这样的网页设计&#xff0c;这里有一些简单的技巧&#xff0c;可以极大地提高跳出率。1.制定计划&#xff1a;第一步不应该…

《HTML CSS设计与构建网站》书评之-异类的风格,不一样的效果

《HTML & CSS设计与构建网站》 书评之 异类的风格&#xff0c;不一样的效果很高兴在此向大家推荐一本制作网页所需要的书籍&#xff0c;它就是《HTML & CSS设计与构建网站》&#xff0d;五星畅销书籍&#xff0c;本书是由(美)达科特(Duckett, J.) 著&#xff0c;刘涛&a…

那些著名网站的90年代

它们都是显赫一时的品牌&#xff0c;Smashing Apps 几个月前曾发过一篇文章&#xff0c;介绍27个著名品牌的网站 &#xff0c;它们引领当今 Web 设计风潮&#xff0c;然而&#xff0c;从没有哪个领域象 Web 设计这样&#xff0c;10年便恍若隔世&#xff0c;本文搜集一些著名品牌…

win10iis网站服务器,win10iis无法开启|如何开启win10专业版系统iis

win10iis无法开启|如何开启win10专业版系统iis1、我们只要按下键盘上的Windows X 进入后我们点击”控制面板“ 选项&#xff0c;打开进入;2、然后在打开控制面板下面我们点击“程序”选项&#xff0c;然后我们打开进入细节如下图所示;3、在进入到程序管理界面中我们点击“启用…

华为云该网站服务器错了,验证服务器出错

验证服务器出错 内容精选换一换如果请求因错误导致未被处理&#xff0c;则会返回一条错误响应。错误响应中包括错误码和具体错误描述。表1列出了错误响应中的常见错误码。如果您已经完成了域名授权验证配置&#xff0c;且域名验证未生效&#xff0c;请参照本章节进行处理。操作…

VS2012+Win7网站发布详细步骤

VS2012Win7网站发布详细步骤 本机环境&#xff1a;本文分三个部分介绍Web项目发布的常规方法&#xff0c;大神级别可以略过&#xff0c;主要是为了方便一些初学者。 第一部分&#xff1a;VS2012把项目发布到文件系统。 第二部分&#xff1a;IIS配置发布好的项目。 第三部分&…

30个创意网站推荐

当你开始设计一个新的网站&#xff0c;很重要的事情是要挑选一个风格相匹配的品牌&#xff0c;在今天的文章中&#xff0c;你会发现一些有灵感创意&#xff0c;醒目和互动的网站设计。灵感会改善和形状的网页设计师创作技巧。。在这篇文章中&#xff0c;我们将展示30个创意网站…

vs2012 网站无法使用自定义服务器的解决方法

我已经习惯新建一个Asp.net网站时把它挂载在IIS下调试运行,在使用Visual Studio 2012后,新建网站配置启动选项时,自定义服务器居然不可用 原来是Visual Studio 2012内置 IIS Express ,并把它设置网站的默认启动选项, 而在之前版本都是使用Visual Studio Development Web服务器,…