性能瓶颈分析及调优

news2024/11/26 21:33:43

分析流程:

很多情况下压测流量并没有完全进入到后端(服务端),在网络接入层(云化的架构比如:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就会出现由于各种规格(带宽、最大连接数、新建连接数等)限制或者因为压测的某些特征符合CC和DDoS的行为而触发了防护策略导致压测结果达不到预期。

分析关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种情况非常小)。

对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory, Disk I/O, Network I/O, 如果是某个硬件指标有问题,需要深入的进行分析。

如果硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、GC等,如果是这些指标问题,需要深入的 分析。

如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查SQL,命中率,锁、参数设置。

如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题,需要具体深入的分析。
 

可能存在的瓶颈点及优化思路

硬件瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈

中间件性能瓶颈:

web软件,数据库,缓存等

应用程序瓶颈:

JVM参数不合理,容器配置不合理,慢SQL,慢事务,数据库设计不合理,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够、无缓冲、无缓存、生产者和消费者不协调等),造成系统在大量用户方位时性能低下而造成的瓶颈。

操作系统瓶颈:

连接数,虚拟内存,内核参数等

网络设备瓶颈:

包括但不限于SLB/WAF/高防IP/CDN/全站加速等

瓶颈应对手段

CPU:

如果CPU User非常高,需要查看消耗在哪个进程,可以用top(linux)命令看出,接着用top –H –p 看哪个线程消耗资源高,如果是java应用,就可以用jstack看出此线程正在执行的堆栈,看资源消耗在哪个方法上,查看源代码就知道问题所在;

如果CPU Sys非常高,可以用strace(linux)看系统调用的资源消耗及时间;

如果CPU Wait非常高,考虑磁盘读写,可以通过减少日志输出、异步或换速度快的硬盘。

内存:

内存的问题主要看某个进程占用的内存是否非常大以及是否有大量的swap(虚拟内存交换)。

磁盘IO:

磁盘I/O一个最显著的指标是繁忙率,可以通过减少日志输出、异步或换速度快的硬盘。

网络IO:

网络I/O主要考虑传输内容大小,不能超过硬件网络传输的最大值70%,可以通过压缩、减少内容大小、在本地设置缓存以及分多次传输等。

内核参数:

注意运行参数不要超过内核参数而导致系统出现问题

JVM:

jvm主要分析GC/FULL GC是否频繁,以及垃圾回收的时间,可以用jstat命令来查看,对于每个代大小以及GC频繁,通过jmap将内存dump,再借助工具HeapAnalyzer来分析哪地方占用的内存较高以及是否有内存泄漏可能。

线程池:

如果线程不够用,可以通过参数调整,增加线程;对于线程池中的线程设置比较大的情况,还是不够用可能的原因是:某个线程被阻塞来不及释放,可能在等锁、方法耗时较长、数据库等待时间很长等原因导致,需要进一步分析才能定位。

JDBC连接池:

连接池不够用的情况下,可以通过参数进行调整增加;但是对于数据库本身处理很慢的情况下,调整没有多大的效果,需要查看数据库方面以及因代码导致连接未释放的原因。

SQL:

慢SQL,可以通过查看执行计划看SQL慢在哪里来进一步优化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人员位置管理,点亮矿山安全之路

矿山作为一个高危行业,安全问题一直备受关注。人员定位置管理是现代矿山安全管理的重要一环,可以帮助企业更好地实现对人员的实时监控和管理。因此,矿山人员位置管理系统对于矿山安全生产和管理非常重要,可以帮助减少安全事故的发…

LeetCode——无重复的最长子串(中等)

题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

【GAN】pix2pix算法的数据集制作

一、A、B合并代码(此代码由官方提供) import os import numpy as np import cv2 import argparseparser argparse.ArgumentParser(create image pairs) parser.add_argument(--fold_A, destfold_A, helpinput directory for image A, typestr, default…

ITIL帮助台怎样帮助企业建设IT服务?

大多数企业都是从邮件开始IT支持建设的,随着企业的规模扩大、服务请求的增长,服务质量不可避免出现了急剧的下降。IT支持团队进入消防员模式,他们只能奔波于解决请求,避免服务失败。没有ITIL所定义的流程体系,IT团队失…

实时同步!从MySQL到SelectDB的无缝数据迁移

随着数据分析在业务决策中变得日益重要,数据实时同步和分析成为企业提升竞争力的关键。MySQL 作为广泛使用的关系型数据库,其数据存储丰富,但无法满足大规模数据分析和高并发查询的需求。而 SelectDB 作为一款专为大数据分析设计的分布式数据…

leetcode121. 买卖股票的最佳时机

题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易…

【前端】JQ实时显示当前日期、时间、星期

效果图 html <span id"time"></span> JS // 实时显示当前时间 $(document).ready(function () {function showTime() {var today new Date;var y today.getFullYear();var M today.getMonth() 1;var d today.getDate();var w today.getDay();va…

Django报错:SystemCheckError: System check identified some issues解决办法

今天练习django自定义标签时&#xff0c;一开始在APPbook中写了自定义标签book_tags.py 测试成功&#xff0c;之后新建了一个APPblogs&#xff0c;测试在blogs中创建模板使用自定义标签&#xff0c;于是直接把book/templatetags包直接赋值到blogs目录里。在页面里加载自定义标…

与敌人争利,懂得迂直之计

与敌人争利&#xff0c;懂迂直之计 【安志强趣讲《孙子兵法》第25讲】 【原文】 故不知诸侯之谋者&#xff0c;不能豫交&#xff1b;不知山林、险阻、沮泽之形者&#xff0c;不能行军&#xff1b;不用乡导者&#xff0c;不能得地利。 【注释】 豫交&#xff1a;豫&#xff0c;通…

<XILINX> AXI4-Lite(二) Slave接口时序分析

目录 01 axi4_lite_slave写事务代码分析 AWREADY时序控制代码分析 WREADY时序控制代码分析 AWADDR寄存时序代码分析 WDATA寄存时序代码分析 BVALID、BRESP时序控制代码分析 axi4_lite_slave 写事务时序总结 02 axi4_lite_slave读事务代码分析 ARREADY时序、ARADDR寄存控…

虫情监测仪的功能优势有哪些?

虫情监测仪是实时监测虫情的仪器&#xff0c;主要由诱虫装置、害虫灭活装置、落虫分散装置、收集装置、图像采集装置以及农业四情测报平台/智慧农业大数据平台组成&#xff0c;能够实时拍摄虫情照片&#xff0c;并将其上传至平台进行识别统计&#xff0c;以便对虫害的发生进行预…

问题杂谈(三十七)远程调试linux中的Tomcat

前言 之前调试过Docker里面的java程序&#xff0c;但还没试过直接调试tomcat里面的java程序&#xff0c;今儿个来试试 步骤 Tomcat 修改catlina脚本&#xff1a;vi catlina.sh&#xff08;bin目录下&#xff09;找到下面这句&#xff0c;将"localhost:8000"改为”…

FC-TDIO51 HONEYWELL 关于霍尼韦尔过程解决方案

FC-TDIO51 HONEYWELL 关于霍尼韦尔过程解决方案 霍尼韦尔过程解决方案(HPS)宣布推出一款文档和变更管理软件&#xff0c;该软件将帮助其客户的工业控制系统的完整性。Honeywell Trace用自动化解决方案取代了纸质记录和电子表格。通过提供复杂系统交互的单一集成视图&#xff0…

YOLO目标检测——人脸性别识别数据集下载分享

人脸性别识别数据集共同2300图片。在社交媒体分析、广告定向投放、零售业、安防系统以及健康和医疗领域等多个领域都具有广泛的应用潜力。通过准确识别人脸的性别&#xff0c;可以为这些领域提供更精准的数据分析和个性化的服务。 数据集点击下载&#xff1a;YOLO人脸性别识别数…

linux查看某一进程占用内存

1.top -p [pid]&#xff0c;Mem对应的是占用百分比&#xff0c;按q退出 2.cat /proc/[pid]/status,VmRSS对应的就是

openEuler自定制生成ISO

目录 1. 下载镜像2. 挂载镜像3. 安装制作发行版的工具4. 同步光盘文件到制作ISO的目录5. 拷贝已安装rpm6. 查找不存在的rpm&#xff0c;写入no_exist_rpms7. 下载no_exist_rpms.txt中的所有依赖包8. 修改 isolinux.cfg 文件9. 修改自动化安装配置文件10. 制作修改noraml文件11.…

SpringCloud(九)——RabbitMQ简单了解

文章目录 1. 同步通讯与异步通讯2. MQ 介绍3. RabbitMQ运行4. RabbitMQ 模型4.1 五种模型简介4.2 实现基本消息队列4.2.1 消息发布者4.2.2 消息订阅者 5. SpringAMQP5.1 基本队列5.2 工作队列5.3 广播5.4 路由5.5 主题 6. 消息转换器 1. 同步通讯与异步通讯 同步通讯 同步通讯就…

24.排序,插入排序,交换排序

目录 一. 插入排序 &#xff08;1&#xff09;直接插入排序 &#xff08;2&#xff09;折半插入排序 &#xff08;3&#xff09;希尔排序 二. 交换排序 &#xff08;1&#xff09;冒泡排序 &#xff08;2&#xff09;快速排序 排序&#xff1a;将一组杂乱无章的数据按一…

【iOS】Masonry的基本使用

文章目录 前言一、使用Masonry的原因二、约束的常识三、Masonry的简单使用四、Masonry的用例总结 前言 暑假安装了cocoapods&#xff0c;简单使用其调用了SVGKit&#xff0c;但是没有学习Masonry&#xff0c;特此总结博客记录Masonry的学习 一、使用Masonry的原因 Masonry是一…

Scrum敏捷开发工具:提高团队协作与交付效率

随着软件开发行业的不断发展和进步&#xff0c;Scrum敏捷开发工具逐渐成为了备受关注的话题。 Scrum是一种灵活且高效的项目管理方法&#xff0c;旨在提高团队协作和交付效率&#xff0c;使团队能够更快地响应变化和需求。 本文将深入探讨Scrum敏捷开发工具的基本概念、使用方…