关于bug修复:可观测性最佳实践-警惕未知的风险正在摧毁你的系统

无声的刺客最为致命,往往外表看似云淡风轻,理论早已危机重重,血雨腥风剑拔弩张。这样的局面看似离咱们很边远,但每个开发运维人员理论都遇到过。在寰球数字经济大潮下,古代企业纷纷投身于业务数字化转型的浪潮。越来越多的行业演变成一个个互联网利用,以实时在线的数字化形式提供服务,解脱了传统意义上物理地位和营业时间的解放。此时在线服务的稳定性、可靠性和并发性能变得尤为重要,因为这些都会极大地影响用户体验和服务质量评估。 ▲ 图源自网络,侵删 比方在刚过去的 2022 年,全国百姓的日常民生问题,都和一个小小的在线实时生成的二维码产生亲密关联,若因服务质量不稳固会造成多重大的结果可想而知。如果此时零碎内呈现无声的刺客,他可能捣毁的不仅仅是一个零碎,甚至关乎企业多年累积的客户信赖与品牌形象,决定企业存亡。如何去发现和辨认这些未知的危险,提前做好预防和优化,是每个开发运维人员须要继续面对的问题。本文以零碎性能瓶颈为例,展现如何通过零碎全链路可观测,来辨认和定位系统前端性能、链路性能、基础设施性能瓶颈以及高效剖析系统日志。所波及到的实现思路和工具会笼罩软件开发、测试、部署和运维各个环节。 前端性能瓶颈体现行为性能瓶颈个别是体现在用户体验方面: 比方用户反馈说:页面加载过慢,动画卡顿,交互提早;比方用户反馈说:你们这个页面怎么加载这么慢啊,好几秒才出现;比方 PM 反馈说:这个列表滑动的时候加载数据一卡一卡的。总之前端的性能瓶颈往往都是有体现的,须要针对具体表现具体分析具体解决。 前端瓶颈介绍前端性能瓶颈通常包含以下几个方面: 加载工夫:页面的加载工夫是一个重要的方面。当页面加载工夫很长时,用户体验会受到显著的影响;渲染工夫:渲染工夫是指浏览器将 HTML、CSS 和 JavaScript 代码转换成理论界面的工夫;CPU 占用率:应用大量的 JavaScript 代码能够导致 CPU 占用率过高,从而导致页面性能降落;内存透露:内存透露是指未能开释已不须要的内存。当 JavaScript 代码不合理地应用内存时,页面的性能会受到影响。图像品质和大小:图片文件的大小会影响页面的加载工夫。more...小编继续更新面对瓶颈的排查思路工欲善其事,必先利其器,前端排查思路个别有以下几种: 思路1:F12可在浏览器的 devtool 里一项项排查,查看邻近运行状态,跟进片段的脚本调用,一点点调试,如下图: 思路2:利用某网站测试性能平台思路输出网址能够看到网站的性能测试后果,能够把所有性能相干指标(FCP、LCP、TBT、CLS)状态展现进去,然而仅仅代表点击测试之后的后果,偶现性能后果不代表所有测试后果,如下图: 思路3:可观测建设思路,性能指标等数据可视化为什么要可视化? 收集到性能监控或者性能指标后,就须要将数据可视化展现进去,广义上数据可视化是将性能的监控指标通过图表的模式展现进去,场景化能满足对数据观测的需要,其中就蕴含帮忙发现数据中暗藏的外在法则。接入观测云,将前端利用数据采集到后,能够通过「观测云控制台 」查看利用性能剖析,改善页面加载(LCP)、互动性(FID)和页面稳定性(CLS),进步用户体验。先讲一下谷歌网站外围指标几个外围指标:LCP、FID、CLS,咱们用这三个指标来掂量网站的载入速度、互动性和页面稳定性。 将我的一个网站接入 RUM 后,在 Web 利用的「性能剖析」页面能够看到,例如统计 PV 数、页面加载工夫、网站外围指标、最受关注页面会话数、页面长任务分析、XHR & Fetch 剖析、资源剖析等指标,如下图成果展现: 性能指标等数据可视化,疾速定位 总之,前端技术栈的性能调优须要从多个方面动手,并综合应用多种办法来进步页面的加载速度和用户体验。在思路3中,咱们曾经介绍了用的是观测云可视化进去性能指标,可视化后,有了根据这样就能够有针对性进行解决,以下实战中疾速定位了多个维度的优化点,别离从长工作、Image、XHR、JS、CSS、Document、Font 方面展现。 实战1:疾速定位长工作卡顿页面TopN 长耗时页面,通过饼图形式,将长工作耗时和页面关联,直观地看到是因为 xxx 页面导致的卡顿。 实战2:疾速定位优化的优先级长耗时工作在不同页面的时序散布,能够针对页面进行优化排等级,如 /statics 页面呈现的长耗时工作较多,可能须要优化的优先级就可能会靠前,或者对应的前端负责人员设定绩效考核点,让绩效间接跟性能挂钩。 实战3:疾速定位出 Top 资源耗费依照耗时来排序,找出耗时最长或者排名靠前的一个资源,定向进行优化,Image、XHR、JS、CSS、Document、Font,定位之后,明确性能优化方向,疾速解决问题。 ...

June 19, 2023 · 1 min · jiezi

关于bug修复:bug-solved-export-default-was-not-found-in-xxx

起因:export 导出不止一个 须要用花括号解构出本人想要的 例如: import Provider from 'mobx-react' 改为 import {Provider} from 'mobx-react'

April 12, 2023 · 1 min · jiezi

关于bug修复:long转为number溢出

问题:在进行后端接口调试的时候,发现无奈更新数据,最初发现是因为id的最初两位全副变为00。后端人员说ID的类型设置为long,而前端是Number类型,超过了17位产生溢出,不应用String是因为数据库的效率问题。解决方案:后端:在发送数据之前通过注解的形式将long转为string。前端:在接收数据的时候通过success回调函数进行解决转为string。最初是后端人员解决了这个问题,因为后端的接口会被其余人员调用,从源头解决不便大多数人。

June 23, 2021 · 1 min · jiezi

关于bug修复:关于京淘项目问题集

对于京淘我的项目问题集 1.maven我的项目创立第一行报错问题报错阐明:对于报错阐明:STS开发工具整合SpringBoot时,容易报maven插件异样的错误信息. STS中的插件版本与SpringBoot中的版本不统一导致的. 解决方案:阐明编辑POM.xml文件信息,批改实现之后须要更新我的项目. `<properties> <java.version>1.8</java.version> <!--指定插件版本 --> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <!--跳过测试类打包 --> <skipTests>true</skipTests> </properties>` * 1* 2* 3* 4* 5* 6* 72).更新我的项目 2.maven工具创立SpringBoot我的项目报错阐明阐明: 利用maven工具,创立SpringBoot 创立时POM.xml文件报错.报错阐明: 个别pom.xml文件报错,个别都是maven私服镜像服务器问题. 步骤1:切换本地仓库的私服地址 `<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>` * 1* 2* 3* 4* 5* 6步骤2: 强制更新maven 3.对于JDK和JRE报错问题阐明:配置环境变量,将JRE配置改为JDK配置信息. 保障JDK版本正确. 4.程序启动报 java.lang.ClassNotFoundException异样报错阐明: IDE在程序运行时无奈找到.class文件进行加载. 可能是将target目录下的文件删除,导致短少.class文件 解决方案: 让程序重写编译即可. 5 对于hosts文件批改的权限问题解决方案:1.增加管理权限 选中hosts文件之后 右键属性.形式2: 以超级管理员的形式运行Switch hosts软件形式3: 增加指定的用户权限 步骤 1.获取以后计算机的名称 PC 2.增加用户信息.注意事项: 计算机名称不要写中文. 形式4: 勾销只读属性 6.nginx拜访报错查看HOSTS文件配置失常.`# 京淘配置 #左侧写IP地址 右侧写域名 两头应用空格分隔127.0.0.1 image.jt.com127.0.0.1 manager.jt.com127.0.0.1 www.jt.com127.0.0.1 sso.jt.com` * 1* 2* 3* 4* 5* 6查看NGINX配置文件是否正确`# 配置图片服务器 server { listen 80; server_name image.jt.com; ##通过网址转向指定的目录 留神/的写法 location / { root D:/JT-SOFT/images; } }` * 1* 2* 3* 4* 5* 6* 7* 8* 9* 10* 11重启nginx在重启之前查看是否有多余的nginx服务项,如果有则敞开.hosts文件是否失效依据申请门路 查看代码中门路的拼接是否失常.http://image.jt.com/2020/08/0...D:JT-SOFTimages/2020/08/07/cc10f60491234317adf800aeafc6af1f.png ...

January 30, 2021 · 2 min · jiezi