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

JVM Optimization Learning(四)

目录

一、调优

1、基础概念

2、什么是调优?

3、调优,从规划开始

4、调优案例


一、调优

1、基础概念

吞吐量:用户代码执行时间 /(用户代码执行时间 + 垃圾回收时间)

响应时间:STW越短,响应时间越好

        所谓调优,首先确定,追求啥?吞吐量优先,还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量...

吞吐量:科学计算、数据挖掘;吞吐量优先的一般:(PS+PO)

响应时间:网站 GUI API(1.8 G1)

2、什么是调优?

  1. 根据需求进行JVM规划和预调优

  2. 优化运行JVM运行环境(慢,卡顿)

  3. 解决JVM运行过程中出现的各种问题(OOM)

3、调优,从规划开始

调优,从业务场景开始,没有业务场景的调优都是耍流氓
无监控(压力测试,能看到结果),不调优

步骤:

  1. 熟悉业务场景(没有最好的垃圾回收器,只有最合适的垃圾回收器)

    1. 响应时间、停顿时间 [CMS G1 ZGC] (需要给用户作响应)

    2. 吞吐量 = 用户时间 /( 用户时间 + GC时间) [PS]

  2. 选择垃圾回收器组合

  3. 计算内存需求(经验值 1.5G 16G)

  4. 选定CPU(越高越好)

  5. 设定年代大小、升级年龄

  6. 设定日志参数

    1. -Xloggc:/opt/xxx/logs/xxx-xxx-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause

    2. 或者每天产生一个日志文件

  7. 观察日志情况

4、调优案例

案例1:垂直电商,最高每日百万订单,处理订单系统需要什么样的服务器配置?

        1小时360000集中时间段, 100个订单/秒,(找一小时内的高峰期,1000订单/秒)

        计算:一个订单产生需要多少内存?512K * 1000 500M内存

案例2:12306遭遇春节大规模抢票应该如何支撑?

        12306应该是中国并发量最大的秒杀网站:号称并发量100W最高
CDN -> LVS -> NGINX -> 业务系统 -> 每台机器1W并发(10K问题) 100台机器
普通电商订单 -> 下单 ->订单系统(IO)减库存 ->等待用户付款
12306的一种可能的模型: 下单 -> 减库存 和 订单(redis kafka) 同时异步进行 ->等付款
减库存最后还会把压力压到一台服务器
可以做分布式本地库存 + 单独服务器做库存均衡
大流量的处理方法:分而治之

案例3:有一个50万PV的资料类网站(从磁盘提取文档到内存)原服务器32位,1.5G 的堆,用户反馈网站比较缓慢,因此公司决定升级,新的服务器为64位,16G 的堆内存,结果用户反馈卡顿十分严重,反而比以前效率更低了

  1. 为什么原网站慢?  很多用户浏览数据,很多数据load到内存,内存不足,频繁GC,STW长,响应时间变慢
  2. 为什么会更卡顿? 内存越大,FGC时间越长
  3. 怎么办? PS -> PN + CMS 或者 G1

案例4:系统CPU经常100%,如何调优?(面试)

        CPU100%那么一定有线程在占用系统资源,
        1. 找出哪个进程cpu高(top)
        2. 该进程中的哪个线程cpu高(top -Hp)
        3. 导出该线程的堆栈 (jstack)
        4. 查找哪个方法(栈帧)消耗时间 (jstack)
        5. 工作线程占比高 | 垃圾回收线程占比高

案例5:系统内存飙高,如何查找问题?(面试)

        1. 导出堆内存 (jmap)
        2. 分析 (jhat jvisualvm mat jprofiler ... )

案例6:如何监控JVM

        1.jstat jvisualvm jprofiler arthas top...

JVM Optimization Learning(三)

再小的努力,乘以365都很明显!
一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃!

相关文章:

JVM Optimization Learning(四)

目录 一、调优 1、基础概念 2、什么是调优? 3、调优,从规划开始 4、调优案例 一、调优 1、基础概念 吞吐量:用户代码执行时间 /(用户代码执行时间 垃圾回收时间) 响应时间:STW越短,响应…...

新华三辅导笔记 2023/10/9-2023/10/13

新华三辅导笔记 一、需要用到的软件二、计算机网络概述1、计算机网络的定义和基本功能(1)什么是计算机网络(2)计算机网络的基本功能 2、(1)局域网、城域网和广域网(范围划分)&#x…...

边坡安全监测系统的功能优势

随着科技的进步,边坡安全监测系统在各种工程项目中发挥着越来越重要的作用。这款系统通过实时监测垂直、水平位移数据,以折线图的方式显示在监控平台中,为工程人员提供了直观、便捷的监控工具,从而能够及时掌握边坡稳定状况&#…...

【架构】研发高可用架构和系统设计经验

研发高可用架构和系统设计经验 从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑。 一、高可用架构和系统设计思想 1.可用性和高可用概念 可用性是一个可以量化的指标,计算的公…...

Linux线程安全

线程安全 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究 可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别 常见锁概念死锁死锁的四个…...

Windows安装Node.js

1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境,它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括: 1. 事件驱动: Node.js采用了事件驱动的编程模型,通…...

想要开发一款游戏, 需要注意什么?

开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项: 游戏概念和目标: 确定游戏开发的核心概念和目标…...

横向AlGaN/GaN基SBD结构及物理模型数据库的开发

GaN基功率器件凭借其临界电场高、电子饱和漂移速度大、热导率高等优良性能在大功率快充、充电桩、新能源汽车等领域具备广泛应用空间。为进一步助推半导体高频、高功率微电子器件的发展进程,天津赛米卡尔科技有限公司技术团队依托先进的半导体TCAD仿真平台成功开发出…...

使用安卓Termux+Hexo,手机也能轻松搭建个人博客网站

文章目录 前言1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址5.结语 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…...

Spring在业务中常见的使用方式

目录 通过IOC实现策略模式 通过AOP实现拦截 通过Event异步解耦 通过Spring管理事务 通过IOC实现策略模式 很多时候,我们需要对不同的场景进行不同的业务逻辑处理举个例子,譬如不同的场景需要不同支付方式,普通的逻辑是使用if-else&#x…...

PyTorch 深度学习实战

文章目录 前言1. 环境安装1.Anaconda2.pytorch cuda 环境3.测试 前言 1. 环境安装 1.Anaconda 可以参考这里:Anaconda学习 2.pytorch cuda 环境 我是按照下面的博客一步步完成,亲测有效 Pytorch安装教程(最全最详细版) 我的…...

学生用RockyLinux9.2模板虚拟机说明

“RockyLinux9.2”模板虚拟机下载地址 链接:https://pan.baidu.com/s/1xcakszIQ7Kp9Nw_NA9Znlg?pwdqzmm 提取码:qzmm 1.模板机是基于“Rocky-9.2-x86_64-minimal.iso”安装 2.模板机是2023.10.10执行dnf update && dnf upgrade更新和升级软件…...

BUUCTF reverse3 1

先运行下 看来是输入正确的flag 使用DIE查看文件 看起来没有壳,直接IDA打开 shift F12查找字符串 一路跟踪 到汇编窗口后F5 这里对Destination和Str2进行比较,Str2有值那么Str2就是经过上面一系列处理之后得到的内容了 继续分析上面的代码 根据…...

关于webWorker未解问题

今天尝试学习webworker,尝试在vue3项目里面使用 使用的就是常规方法,使用worker-loader,加上在vue.config.js内部添加配置 使用完发现问题 如图所见,该worker仅仅配置点击后传输字符串"1",并在worker内部打印,发现打印不出来 但是仅仅只是将引入的文件换个名字 …...

自然语言处理(NLP)的开发框架

自然语言处理(NLP)领域有许多开源的框架和库,用于处理文本数据和构建NLP应用程序。以下是一些常见的NLP开源框架及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合…...

Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构

Spring Boot和Kubernetes(K8s)是当今非常热门的技术,它们的结合可以帮助开发者更高效地构建、部署和管理应用程序。本文将详细介绍Spring Boot和Kubernetes的主要特点,以及它们结合使用的优势。 一、Spring Boot的特点 Spring B…...

Qt自带的日志重定向机制

//Qt5开始提供了日志上下文信息输出,比如输出当前打印消息所在的代码文件、行号、函数名等。 //如果是release还需要在pro中加上 DEFINES QT_MESSAGELOGCONTEXT 才能输出上下文,默认release关闭的。 //切记不要在日志钩子函数中再写qdebug之类的&#x…...

笔记36:CNN的多通道卷积到底是什么样的

总结: (1)输入卷积层的feature_map的通道数,就是该卷积层每个卷积核所含有的通道数 (2)输出卷积层的feature_map的通道数,就是该卷积层所含有的卷积核的个数 a a a a 解释:【…...

【eigen】解决报错 return type of RCmpEQReturnType Eigen::operator== is not ‘bool’

文章目录 1. 发现问题2. GPT 分析问题3. 解决问题 1. 发现问题 在 c 项目中使用了 C 20 编译标准(GCC10),结果 eigen 中出现报错 /usr/include/eigen3/Eigen/src/Cholesky/LDLT.h:372:58: error: return type of ‘const RCmpEQReturnType …...

QT 实现mysql的长连接

以下是一个使用Qt进行MySQL长连接的示例程序: #include <QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug>class MySQLConnection :...

Zabbix监控大屏展示中文总乱码?手把手教你替换DejaVuSans为微软雅黑字体

Zabbix监控大屏中文乱码终极解决方案&#xff1a;从字体替换到视觉优化 当你精心配置的Zabbix监控大屏在向管理层汇报时突然出现中文乱码&#xff0c;那种尴尬就像交响乐团演出时小提琴突然走音。作为经历过数十次企业级监控系统部署的资深运维&#xff0c;我深知字体问题远不止…...

GNN与MLIP:材料科学计算的高效新方法

1. GNN与MLIP&#xff1a;材料科学计算的新范式在材料科学领域&#xff0c;传统的第一性原理计算&#xff08;如密度泛函理论DFT&#xff09;虽然精度高&#xff0c;但计算成本极其昂贵&#xff0c;难以处理大体系或长时间尺度的模拟。图神经网络&#xff08;GNN&#xff09;与…...

手把手教你用Python脚本给飞书机器人“喂”数据:Gerrit事件通知实战

Python自动化实战&#xff1a;用飞书机器人构建Gerrit事件通知系统 每当团队协作开发时&#xff0c;代码审查状态的实时同步总是让人头疼。想象一下&#xff1a;你刚提交的代码被同事点赞&#xff0c;或是某个关键补丁集终于通过审核——这些重要时刻如果能在飞书群里即时提醒&…...

Mac小白必看:手把手教你用终端命令重建丢失的Recovery HD分区(附详细路径解释)

Mac用户自救指南&#xff1a;彻底掌握Recovery HD分区修复全流程 当你发现CommandR组合键失效时&#xff0c;那种无助感我深有体会。去年帮朋友修复一台二手MacBook时&#xff0c;我们花了整整一个下午才搞明白为什么恢复模式无法启动——原来前主人为了腾出空间删除了Recovery…...

解锁Midjourney V6针孔相机效果:从模糊边缘到胶片噪点,7步零代码复刻1950年代Lomography美学

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney V6针孔相机美学的视觉基因解码 针孔相机&#xff08;Pinhole Camera&#xff09;作为一种无镜头、仅靠小孔成像的原始光学装置&#xff0c;其模糊边缘、高对比暗角、中心锐度衰减与天然晕影…...

国内热门的广州租车工厂哪个好

在广州&#xff0c;租车需求日益增长&#xff0c;如何选择一家靠谱的租车工厂成为众多消费者关心的问题。今天&#xff0c;就为大家介绍一家热门的租车企业——广州市白驹旅游汽车有限公司&#xff08;简称白驹旅汽&#xff09;&#xff0c;并与其他大厂进行对比分析。车辆保障…...

PPPoE协议全解析:从原理到实践,打通家庭宽带连接第一关

1. 项目概述&#xff1a;从“猫”到世界的旅程每次打开网页、刷起视频&#xff0c;你有没有想过&#xff0c;你家的宽带究竟是怎么连上互联网的&#xff1f;这背后其实是一场从你家客厅到全球数据中心的精密“接力赛”。而这场接力赛的第一棒&#xff0c;也是最关键的一棒&…...

LSM6DS3TR-C与磁力计集成:九轴数据融合与姿态解算实践

1. 项目概述&#xff1a;从运动传感器到磁力计的数据融合在之前的系列文章中&#xff0c;我们已经深入探讨了LSM6DS3TR-C这款六轴惯性测量单元&#xff08;IMU&#xff09;在加速度计和陀螺仪数据采集、运动检测算法实现等方面的应用。今天&#xff0c;我们将把目光投向一个同样…...

每日大赛间歇期通过Taotoken模型广场探索新模型特性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 每日大赛间歇期通过Taotoken模型广场探索新模型特性 对于每日参与各类AI应用开发或创意大赛的选手而言&#xff0c;比赛间歇期并非…...

RK3568平台开发系列讲解(热拔插篇)内核是如何发送事件到用户空间

🚀返回专栏总目录 文章目录 一、相关接口函数 二、udevadm 命令 三、实验程序 四、运行效果 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与…...