JVM系列(9)——调优初体验

news2024/10/7 4:31:24

学习这篇文章之前,要了解:
JVM系列(2)——垃圾回收
JVM系列(3)——内存分配与回收策略
先了解概念:
吞吐量:用户执行时间/(用户执行时间+垃圾回收时间);就是干正经事的时间占比。
响应时间:STW越短,响应越好。
调优调的就是这两个。

一、常见垃圾回收器

在这里插入图片描述
经常组合使用:
Serial+Serial Old 串行回收
在这里插入图片描述
Parallel Scanvenge+ParallelOld PS+PO 并行回收(jdk1.8默认)——吞吐量优先
在这里插入图片描述
ParNew+CMS组合:PN更注重响应时间,PS则是吞吐量优先。并发标记清除,可以达到最短STW时间。
但是,第四步并发清理时,会产生浮动垃圾,这个时候尽量提高老年代的空间,以防内存溢出。
或者:降低触发CMS的阈值。
在这里插入图片描述
另外,还有G1垃圾回收器,另外文章再总结。——响应时间优先

二、垃圾回收日志查看

我们拿Parallel举例:
配置参数是将日志输出在gc.log中。

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
-Xloggc:gc.log

一段简单的代码:

    public static void main(String[] args) {
        String a  = "111";
        System.out.println(a);
        Thread b = new Thread();
    }

输出日志如下:
在这里插入图片描述
很明显,total总量,used使用量,capacity也是总量。
其中,committed是虚拟内存占用,reserved是虚拟内存保留。(了解就行)
还有一部分日志如下:

 [GC (Allocation Failure) [PSYoungGen: 33280K->3822K(38400K)] 33280K->3830K(125952K), 0.0043770 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 

怎么解释呢,我们看马老师的一张图:
在这里插入图片描述

三、调优步骤

1、调优调什么?

JVM规划、优化JVM运行环境、解决JVM运行中的问题。

2、调优步骤

(1)根据可能业务场景选定合适的垃圾回收器:
吞吐量or响应时间,或者兼顾
(2)大致计算内存需求、选定好CPU(根据经验或者业务架构)
(3)设置各年代大小、升级年龄,分配好内存
(4)设置日志参数、观察日志情况(类似于log4j,循环覆盖)
(5)前面各种设置,一定要根据实际业务情况,做好压力测试,及时调整。

四、两个例子

1、每天百万订单的一个网站,怎么设计服务器配置?
5-7点的话是72w订单的话,每秒1000并发,那就计算1个订单产生多少内存(比如1M),那每秒就是1000M。2G内存肯定够用了。
如果是10ms之内要能承受多少订单,可以预先压测。
2、12306的百万并发怎么支撑?
CDN(全国很多节点)-LVS-Nginx-单个业务系统(1000台机器)—单个机器(比如100并发)。
简单来说:分而治之。
3、CPU占100%,怎么调优?
(1)找出CPU高的进程(top);
(2)找出进程中的高cpu线程(top+Hp)
(3)导出线程堆栈(jstack)
(4)查找具体方法(栈帧)消耗时间(jstack)
4、系统内存飙升,怎么解决?
(1)导出堆内存(jmap)
(2)分析(jhat)

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

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

相关文章

C++语法(25)--- 异常与智能指针

C语法(24) C11_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131054426?spm1001.2014.3001.5501 1.异常 try { // 保护的标识代码 }catch( ExceptionName e1 ) { // catch 块 }catch( ExceptionName e2 ) { // catch 块…

RT-Thread qemu mps2-an385 bsp 移植制作 :BSP 制作篇

下载 V2M-MPS2_CMx_BSP mps2 的资料很少,所以唯一能下载的是 ARM 官方的 V2M-MPS2_CMx_BSP,下载地址为: https://keilpack.azureedge.net/pack/Keil.V2M-MPS2_CMx_BSP.1.8.0.pack 其实这是个 Keil MDK5 的 Pack 包,安装后&#x…

JAVA-ReentrantLock(五)

概念 在Java中,“lock”(锁)是一种用于并发控制的机制。它用于确保在多线程环境中,同一时刻只有一个线程可以访问共享资源或临界区。当一个线程获得了锁,其他线程将被阻塞,直到持有锁的线程释放它。这样可…

Cocos Creator 3.8 后期效果 Shader 编写(1/2) 基础篇

原文链接:Cocos Creator 3.8 后期效果 Shader 编写(1/2) 基础篇 在 Cocos Creator 3.8 版本中,新增了不少实用的特性,其中我最喜欢的,就是它自带后期效果管线,并且还内置了许多高级效果。 有用…

XUbuntu22.04之Linux剪切板和selection primary区域(一百八十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

二、Java框架基础02 XML

二、XML 2.1 XML 简介 XML 即可扩展标记语言,一种简单的数据存储语言,使用一系列简单的标记来描述结构化数据 XML 的特点 XML 与操作系统,编程语言的开发平台无关规范统一,实现不同系统之间的数据交互 2.1.1 XML 的文档结构 以下…

vulnhub靶场之CengBox3

1.信息收集 输入命令:netdiscover -i eth0 -r 192.168.239.0 ,发现181机器存活 输入命令nmap -p- -sV -O -Pn -A 192.168.239.181 ,进行端口探测,发现存在22、80、443端口,还发现存在域名ceng-company.vm。 将域名c…

【linux基础】05-linux文件系统

概述 在Linux中,文件系统是一种分层结构,它将文件和目录组织成树状结构。文件系统从“根”目录开始,该目录由单个正斜杠(“/”)表示。 如下图所示: Linux 支持多种类型的文件系统,包括: Ext4:这是大多数 Linux 发行版的默认文件系统。它是一个日志文件系统,提供良…

拉格朗日乘数法(Lagrange)的推导

同济版高数上,关于拉格朗日乘数法,以及好多知识点说的语焉不详、模棱两可,在阅读了知乎等博主的几篇文章后,才算勉强弄懂了该知识的原理。 首先说一下高数上隐函数求导。所谓的隐函数求导,就是在方程中多个变量之间的…

如何使用Java 实现excel模板导出---多sheet导出?

实现多个sheet的excel导出功能 效果展示&#xff1a; maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>or…

泛微E-Cology XXE漏洞复现(QVD-2023-16177)

0x01 产品简介 泛微协同管理应用平台E-Cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 0x02 漏洞概述 泛微e-cology某处功能点最初针对用户输入的…

STM32 点灯实现 7.18

嵌入式&#xff1a; 以应用为中心&#xff0c;以专用计算机为基础&#xff0c;软硬件可裁剪ARM A系列芯片&#xff1a;高端芯片&#xff0c;实现人机互动 R系列&#xff1a;实现时效性 M系列&#xff1a;低端芯片&#xff0c;控制硬件设备&#xff0c;灯&#xff0c;风扇....…

Springboot初识(一)

一.什么是Spring Boot Spring Boot是一个开源的、用于简化Spring应用程序开发的框架。它是Spring项目的一个子项目&#xff0c;旨在为Spring应用程序提供更快速、更便捷的开发体验。Spring Boot基于Spring框架&#xff0c;同时也整合了其他Spring项目和第三方库&#xff0c;使…

Unity-AssetBundle

一、AB 包介绍 ​ AB 包是特定于平台的资源压缩包&#xff0c;类似于压缩文件。其中资源可包括&#xff1a;模型、贴图、预设体、音效、材质球等等。 ​ 相较于 Resources 文件夹下的资源文件&#xff0c;AB 包能够更好管理资源&#xff1a; Resources 文件夹&#xff1a;打包…

【设计模式】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)

介绍 建造者模式又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别)&#xff0c;使这个抽象过程的不同实现方法可以构造出不同属性的对象建造者模式是一步一步创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象的类型和…

【PHP面试题79】在Linux中如何设置MySQL和PHP服务开机启动

文章目录 &#x1f680;一、前言&#x1f680;二、设置MySQL服务开机启动&#x1f50e;2.1 打开终端&#x1f50e;2.2 编辑MySQL配置文件&#x1f50e;2.3 修改配置文件&#x1f50e;2.4 检查MySQL服务是否已启动&#x1f50e;2.5 设置MySQL服务开机启动 &#x1f680;三、设置…

C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理

Modbus ASCII是串行链路上的协议,也就是说ModbusASCII是通过串口通信来实现的,它可以通过RS232、RS485物理层的接口来实现,同时它也是一个主从协议,在同一时间总线上只能有一个主站和一个或多个(最多247)个从站。Modbus通信总是由主站发起,从站没有接收到主站的请求时不…

NOAA国家强风暴实验室的天气雷达研究历史(1962年~2016年)

一、1962年-NSSP开始研究WSR-57 美国气象局国家严重风暴项目(NSSP)的一小群研究人员从堪萨斯城搬到俄克拉荷马州诺曼的天气雷达实验室,并开始研究最近安装的研究天气监视雷达-1957(WSR-57)。 二、1964年-NSSL开发的脉冲多普勒雷达技术 1956年,康奈尔航空实验室建造了一…

C++OpenCV(2):图像处理基础概念与操作

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 图形读取与显示加载图片显示图片打印图片信息保存图片 色彩模型转换RGB颜色模型HSV颜色模型HLS模型LAB模型 图像像素读写操作像素算数运…

python机器学习(二)特征工程、K-近邻算法、KNN工作流程、scikit-learn实现K近邻算法、K值选择、距离计算、KD树

特征工程 把特征转换为机器容易识别的数据&#xff0c;把特征a转化为机器容易读懂、量化的语言 归一化Min-Max 将原始数据映射到[0,1]之间 X ′ x − m i n m a x − m i n X \frac{x-min}{max-min} X′max−minx−min​ 但是归一化是有弊端的&#xff0c;比如有一个值错误…