当前位置: 首页 > news >正文

谷粒商城实战笔记-144-性能压测-性能监控-堆内存与垃圾回收

文章目录

  • 一,两种类型的应用
    • 1,CPU密集型应用
      • 示例:Apache Spark
    • 2,IO密集型应用
      • 示例:MySQL
  • 二,监控

我们通过压力测试对接口进行了性能评估,以确定其是否满足性能要求。
如果不符合,就需要进行优化。

优化时需要考虑多方面因素,如:

  • 数据库性能
  • SQL语句效率
  • 应用程序的编码质量
  • 中间件的影响
  • 网络IO
  • 操作系统

性能优化首先要判断应用是CPU密集型还是IO密集型

一,两种类型的应用

CPU密集型应用需要大量计算,而IO密集型应用则涉及大量的数据传输和读写。针对不同类型的应用,优化策略也不同。

例如,CPU密集型应用可以通过增加CPU或使用多台服务器来分担任务。

而IO密集型应用则需要考虑使用固态硬盘、增加内存、缓存技术和提高网络传输效率。

1,CPU密集型应用

CPU密集型应用是指那些需要大量计算资源,对处理器性能要求较高的应用。这类应用的特点是CPU使用率很高,而IO操作相对较少。它们通常涉及到复杂的算法处理、数据分析或图形渲染等任务。

示例:Apache Spark

Apache Spark是一个开源的分布式计算系统,它提供了一个快速和通用的集群计算平台。Spark广泛应用于大数据处理和机器学习领域,其核心是一个优化的内存计算引擎,能够处理大规模数据集。

性能特点:

  • 内存计算: Spark利用内存进行数据计算,减少了磁盘IO操作,从而提高了处理速度。
  • 并行处理: 通过并行处理,Spark能够将任务分配到多个CPU核心上,实现高效的计算。

2,IO密集型应用

IO密集型应用是指那些主要受限于输入输出操作的应用,如网络服务、数据库操作等。这类应用的特点是CPU使用率相对较低,但对IO操作的依赖很高。

示例:MySQL

MySQL是一个广泛使用的开源关系数据库管理系统。数据库操作通常涉及到大量的磁盘读写,因此MySQL是一个典型的IO密集型应用。

性能特点:

  • 缓冲管理: MySQL通过缓冲池来减少磁盘IO操作,提高查询性能。
  • 索引优化: 通过优化索引结构,MySQL能够快速定位数据,减少IO操作的次数。

二,监控

就像中医看病会望闻问切一样,在计算机应用优化过程中,也需要收集足够的信息才能定位到问题,根据问题制定解决方案,这些信息就是各种监控指标。

我们需要监控CPU和内存的使用率、线程数等,以便进行合理的优化和分析。

Java的内存模型和垃圾回收机制对于性能优化至关重要。

Java虚拟机(JVM)的内存分为多个区域,包括堆、方法区、程序计数器、本地方法栈和虚拟机栈。

其中,堆是存储对象实例和数组的地方,是优化的重点。

JVM的执行引擎负责执行方法调用,而本地方法则涉及操作系统的接口。

JVM的堆分为新生代和老年代。新生代包括伊甸园区和两个幸存者区(S0和S1)。

对象首先在伊甸园区创建,如果内存不足,则触发Minor GC,清理新生代中不再使用的对象,并将存活的对象移动到幸存者区。

幸存者区的两个区域会交替使用,以确保总有一块空间是空闲的。

当对象在幸存者区存活超过一定次数后,它们会被晋升到老年代。老年代存储的是长期存活的对象和大对象。

如果新生代或老年代的内存不足,会触发Full GC,这是一种成本较高的垃圾回收操作。因此,在性能优化时,要尽量避免Full GC的发生。

http://www.lryc.cn/news/418995.html

相关文章:

  • 大模型综述
  • Python 常用内置函数
  • 什么是大数据?
  • Linux 内核源码分析---资源分配及系统总线
  • C# POST请求 各种实现方法梳理
  • 《MySQL数据库》数据导入、导出、表处理—/—<4>
  • Java I/O (Input/Output)——文件字节流
  • VisionPro二次开发学习笔记4-使用C#创建绘图图形
  • 【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据
  • 【学习笔记】Matlab和python双语言的学习(最大最小化规划)
  • 基于SpringBoot的Redis开发实战教程
  • mysql 分区操作
  • [网鼎杯 2018]Comment
  • LVS详解
  • Yolo-World初步使用
  • Navicat Premium使用
  • LLC数字控制TMS320F28034,4-DSP的epwm配置介绍
  • MongoDB学习记录
  • vlunstack-2(复现红日安全-ATT CK实战)
  • 【生信入门】预览快速体验Linux-重生之小明闯Linux
  • 用.net core简易搭建webapi托管到IIS
  • 【计算机网络---OSI七层模型】
  • Error updating database. Cause: org.apache.shiro.UnavailableSecurity
  • 【网络安全】本地文件包含及远程文件包含漏洞详解
  • redis启动的三种方式
  • 手机怎么远程控制电脑屏幕?手机远程控制电脑方法分享
  • NET的全称、主要功能以及在计算机网络中的作用?
  • LLM - 使用 HuggingFace + Ollama 部署最新大模型 (GGUF 格式 与 Llama 3.1)
  • 如何实现Redis和Mysql中数据双写一致性
  • three.js 模型高亮效果实现说明(结合react)