架构必会的性能指标及分析策略

编程一生 编程一生     2022-10-02     737

关键词:

  不管是java还是.net基础设施必不可少。

MQ:

  如果发现MQ是瓶颈。不管用的是rabbitmq还是kafka,其他的也好。作为生产者要确认超时时间、重试机制、异步线程池。消费方要做两件事:发现和解决。发现的主要是通过积压阈值最快发现问题。解决的方法主要有:短期方案:增大线程数,增加服务器。长期需要优化逻辑。积压阈值的设置主要取决于对积压的容忍程度,比如我们的服务对延时很敏感,那么设置积压阈值为50或者100。这样有问题可以快速发现。

缓存:

   缓存的话,不管是tair还是redis或者memcached。我们对缓存的写入成功和数据存在性都不能强依赖。所以基本要做到缓存读取不成功就需要再次查DB。而且不管出什么问题,对程序来说,就是抛异常了。所以一定要异常捕获。数据要用异步线程池异步写入。监控要做好。我们有个服务要做一层缓存。我们组的兄弟比较担心,问我了解不了解冷热启动的概念。这个其实需要去咨询维护服务的人怎么定义这个概念。一般来讲:冷启动数据是从磁盘加载的,热启动是从内存加载的。

超时和重试:

  为了防止别的服务出问题,一定优化好超时时间和重试机制。超时时间的定义一般设置为一个请求处理99.9%的耗时时间的5到10倍。这是因为考虑到跨机房等网络耗时的问题。虽然运维的同事会告诉说跨机房之间的时延也就是1ms或者2ms的事情,但是实际值要大于这个值,所以一般设置超时时间是100ms起步。很多请求设置了这个值还是超时了,没关系,就是截获一个异常然后重试。如果服务不重要,比如展示的时候,去取一个展示的key的字典值,也可以不重试。一般的RPC组件默认重试是3次。

  一般超时的异常有以下特征:

java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy67.xxxx(Unknown Source)
at 

Caused by: org.apache.thrift.TException: tthrift remote(IP:端口) invoke(xxxx) timeout, traceId:-2093033244087395764, timeout:100

  Unknown Source:远程问题的特征之一

  timeout是超时的特征

服务隔离:

  服务隔离是为了减少损失的影响范围,避免雪崩效应。比如我们有一些外部的依赖:我们依赖微信支付的稳定性、支付宝支付的稳定性、银联支付的稳定性。那么我需要按照这几种通道做物理隔离,可以部署相同的代码但是部署在不同的机器群。

组件版本及时升级:

  比如httpclient4.3的版本有个bug并发量大的时候会阻塞。之前在乐视的时候,部门有个小组的服务就发生过这样的线上问题。

及时下线不再使用的代码:

  可能在一个团队中很多程序bug都是因为存在太多的兼容逻辑和临时代码,写这些逻辑的人如果没有加上很好的注释,在用完的时候也没有及时清理。后来维护的人看到这段毫无道理的代码不敢动。程序里大量的IF和ELSE,很容易踩坑。招聘的时候卡的很严,很多面试者不服气,我也能写出来代码。但是会写代码和会写代码是不一样的。我们需求很急,但是宁愿不做也不要一个写出一堆问题代码,处处是坑,难以维护代码的程序员。

数据库:

  一个数据表的数据过多,对更新和查询性能都有影响。对于不再使用的数据要及时备份清走。一般数据库的容量剩余不到60%, 就要考虑分库分表了。一般一台物理机写入能力也不能高于QPS1500。所以对于主从延时不是很敏感的业务场景,一定要做好读写分离。虽然做了读写分离,如果读和写的代码在一个事务里,其实都是走的主库。

梳理好依赖:

  开发一个系统,最忌讳的是没有灵魂。来什么需求都接。把系统搞得很乱。梳理好系统的边界和定位。我们应该依赖什么服务,是强依赖还是可以降级的弱依赖。调用系统的调用方需要什么东西,我们是应该给提供,还是让他们自己去解决。

总结:

  上面提到的哪一步没有做好,都可能引发蝴蝶效应。比如:一个MQ的消费能力差,积压了,生产者同步写入,写入等待。另外一个服务调用了这个接口,还把这个调用包裹到事务里,导致这个事务长时间不提交。这样的请求来几个,线程池满了,整个服务就挂了。如果别人调用这个服务,超时时间设置的过长,别的服务也跟着线程池满,挂掉了。如果没做好物理隔离,所有服务都挂了。

      

跑题时间:

  玛格丽特.米切尔写的《飘》英文原名是《gone with the wind》,意思是美国南部的奴隶制文明一去不返,中文的翻译完全没有这种韵味。女主人公斯嘉丽爱慕阿希礼的高贵气质,冒着生命危险为他做了很多的事情。而阿希礼只在斯嘉丽需要的时候给了她一把土。当时光沉淀了一切,斯嘉丽意识到自己爱上的只是自己想象出来的一个人,基于阿希礼。阿希礼只是空有一副皮囊,他的灵魂基于他的妻子梅兰。而斯嘉丽自己的丈夫白瑞德才更配的上自己的灵魂。爱情来的时候本来就是毫无道理,而自己困境中望着你,你一次次将我逼进绝望。我一次次从绝望中翻身的强大会将你从心里挤走。一个再坚强的女孩子最后也会爱上让自己不用坚强的人。

  喜欢做鱼头鸡汤。鱼肉可以做出很多种花样,而鱼头吃起来比较费劲,骨头多,做汤最好。鸡片入锅,加上水豆豉,枸杞、姜片、甘草。将鱼头放到笊篱里,水煮到笊篱里只剩鱼骨,将笊篱拿出。关火装盘即可。好汤关键是食材,食材越好,调料可以越少。

  世界上最遥远的距离是鱼和飞鸟的距离,一个在天际一个却深潜水底。我却偏偏想让他们在一起。即使不用一起成为汤,他们也可以在水面的一瞬间相遇。世界上最遥远的距离是我变成了你最喜欢的样子站在你面前,却不喜欢你。

架构实践架构师必知必会的5种业界主流的架构风格

 【架构实践】架构师必知必会的5种业界主流的架构风格目录 【架构实践】架构师必知必会的5种业界主流的架构风格 查看详情

性能测试流程及数据分析

...等。准备测试工具、脚本及测试数据:根据分析系统架构模式对自动化测试工具选型、对脚本的录制调试以及测试 查看详情

《大型网站技术架构:核心原理及案例分析》阅读笔记02

第二篇:架构  本篇主要就第三节提到的五个网站架构关注点进行分析,为我们介绍了如何让自己的网站达到每一个性能的要求。  1.瞬时响应:网站的高性能架构    网站的性能是客观的指标,可以具体到相应时间、... 查看详情

29个阿里架构师必会的核心实战知识点整理清单

29个阿里架构师必会的核心实战知识点整理清单Java高级架构n 2019-06-2409:00:00由于每篇的细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有各种细化讲解内容!JVMJVM是可运行Java代码... 查看详情

java高级开发必会的性能优化的细节

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。(1) 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载... 查看详情

spark必知必会的基本概念

...器上,这是一个容量巨大、具有高容错性的磁盘。通常的架构是一个NameNode(存放元数据)多个DataNode,为了防止namenode宕机,有一个备用的NameNode:StandbyNameNode。     图3HDFS架构  spark的资管管理与调度使用YARN 查看详情

vim故障及必会的处理方法(详细图解流程)

1、vim编辑文件时候,修改了内容,没有正常保存退出导致,重新打开会出现下面的故障提示rm-rf文件名,之前未保存的信息丢失2、恢复修改的内容按Enter------:q离开vim-r/tmp/xiyuxingxia.txt,恢复内容后:wq保存退出ls-la/tmp将.xiyuxingxia.txt.... 查看详情

好奇?!elasticsearch25个必知必会的默认值

...涉及“默认”关键词的讨论接近400多处。这些默认值对于架构选型、开发实战、运维排查性能问题等都有很好的借鉴价值,虽官方文档都有详细论述,但散落在各个角度。处于本能的好奇心,我认为非常有必要结合自己的实战经... 查看详情

软件测试jemeter性能测试(性能测试,jemeter使用与结果分析)

...变化③TPS4.性能优化方案前言性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。本文简... 查看详情

软件测试jemeter性能测试(性能测试,jemeter使用与结果分析)

...变化③TPS4.性能优化方案前言性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。本文简... 查看详情

测试工程师必会的缺陷分析,不难啊...

缺陷分析也是测试工程师需要掌握的一个能力,但是很多时候大家只记得要提交缺陷、统计缺陷情况,而忽视了缺陷分析。其实每个项目的缺陷记录都是有很大价值的。在测试阶段分析当前缺陷情况,及时发现存在的... 查看详情

程序员必会的git语法及gitlabgithub应用

文章目录3分钟掌握git语法及gitlab、github应用关于作者作者介绍前言一、控制版本1.1什么是版本1.2什么是控制版本1.3版本管理工具二、git版本管理2.1git介绍2.2git安装2.3git工作转态2.4git工作流2.5git基本操作1.Ggit身份标识2.git初始化工... 查看详情

程序员必会的git语法及gitlabgithub应用

文章目录3分钟掌握git语法及gitlab、github应用关于作者作者介绍前言一、控制版本1.1什么是版本1.2什么是控制版本1.3版本管理工具二、git版本管理2.1git介绍2.2git安装2.3git工作转态2.4git工作流2.5git基本操作1.Ggit身份标识2.git初始化工... 查看详情

云计算开发者必会的虚拟化技术入门

...介绍:张献涛,阿里云资深专家,现主导阿里云ECS虚拟化架构的设计与研发工作。课程目标 学习掌握云计算技术的核心技术 查看详情

wequant交易策略—kdj

KDJ随机指标策略策略介绍KDJ指标又叫随机指标,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。随机指标KDJ一般是用于股... 查看详情

pandas必会的方法汇总,用python做数据分析更加如鱼得水!(附代码)

...时间序列等。来源|AI算法与图像处理今天来分享一些Pandas必会的用法&#x 查看详情

pandas必会的方法汇总,用python做数据分析更加如鱼得水!(附代码)

...时间序列等。来源|AI算法与图像处理今天来分享一些Pandas必会的用法&#x 查看详情

我的linux,我做主!性能监控工具nmon必知必会

目录:(一)常见性能监控指标(二)nmon简单介绍(三)如何使用nmon(一)常见性能监控指标(1.1)一般我们在系统监控中,我们想要做一个好的性能测试,此时我们需要从如下的几个方面来进行考虑,我们的性能主要分为前端... 查看详情