疫情期间,千万级系统宕机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

相关文章

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默