疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...

本文主要是介绍疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

性能调优整体思路

作为一名团队技术核心,如何让系统跑得通、跑得稳、跑得快是必然会面对的场景。性能分析是一个大课题,不同的架构、不同的应用场景、不同的程序语言分析的方法若有差异,抽象一下大致分为两类:

  • 自底向上:通过监控硬件及操作系统的指标(CPU、内存、磁盘、网络等硬件资源的性能指标)来分析性能问题(配置、程序等问题)。因为用户请求最终是由计算机硬件设备来完成的,做事的是CPU。

  • 自顶向下:通过生成负载来观察被测试的系统性能,比如响应时间、吞吐量;然后从请求的起点由外及里一层一层的分析,从而找到性能问题所在。

不管是自上而下还是自下而上,关键点就是生成负载、监控性能指标。好一点的方式是先用自顶向下的方式解决掉明显的性能问题,再结合自底向上的方式分析更深层次的问题。

性能分析过程

步骤名称

说明

检查RT

模拟用户发起负载后,采用的自顶向下的方式首先分析RT(响应时间)

检查TPS

TPS大时RT小,说明性能良好

检查负载机资源

检查CPU使用率,CPU负载(Load Average)确认是用户CPU占用高还是系统CPU占用高
 前提:确认测试脚本没有性能问题,不会造成结果统计的不准确
 检查内存使用情况,确认并发内存泄漏风险,不会造成结果统计的不准确

判断负载机是否有性能问题

排除负载机的性能问题,确保测试结果可参考

检查Web服务器的资源消耗

1、检查CPU使用率,确认用户CPU与系统CPU占用情况
 2、检查内存使用情况
 3、检查磁盘使用情况
 4、检查占用的带宽
 5、分析Web页面响应的时间组成,确认是什么请求影响了性能

确认是否Web服务器瓶颈

标判断是否是Web服务器硬件性能瓶颈

检查中间件配置

确认是否是此配置问题

检查APP服务器资源消耗

关注CPU、内存、磁盘、IO,判断是否是App服务器硬件性能瓶颈

数据库服务器资源消耗分析

1、CPU消耗,CPU负载
 2、内存消耗
 3、IO繁忙程度
 4、数据库监控

是否是DB性能问题

由监控结果来判断是否是DB性能问题

是否SQL问题

1、定位最不合理的SQL占比索引是否正常引用
 2、检查共享SQL是否合理范围
 3、检查解析是否合理
 4、检查数据ER结构是否合理
 5、检查数据热点问题
 6、检查数据分布是否合理

其他

比如网络阻塞、磁盘IO瓶颈、热点等












 .NET性能调优四天集训

3月11日~14日,架构师Zilor老师将带领大家开启.NET性能调优4天突击营,Zilor老师拥有12年软件开发经验,7年大型互联网架构经验,此次,他将会为大家复盘.NET性能调优的经典场景,为大家提供高效、接地气的解决方案,让您迅速成为面试官或同事眼中的“老司机”。

课程原价599元,本号粉丝一律0元学(免费名额仅499名),长按扫码进班级群。

第一天:如何使用VS进行性能排查    
  • 算法对性能的影响

  • 缓存对性能的作用

  • 锁的问题

  • 响应与吞吐

  • Performance Diagnostic Tools

第二天:ASP.NET Core 该如何优化    
  • 内存缓存与响应缓存中间件

  • 响应压缩

  • 负载测试与压力测试

第三天:数据库的优化该怎么做    
  • SQL语句优化

  • 索引

  • 分区、分表与分库

  • 读写分离

第四天:如何使EF Core更加高效    
  •  延迟加载与贪婪加载

  • IQueryable与IEnumerable的区别

  • 实体追踪

  • 查询优化

  • 标量函数

进群享四大福利

福利1:送价值399元.NET Core视频合集

福利2:送价值299元微服务视频合集

福利3:送价值499元数据结构算法视频合集

福利4:赠送价值199元Redis视频合集

扫码获取以上福利

仅限前199名

这篇关于疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355313

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20