JVM之调优(一)

背景:生产环境由于堆内存较大,fullgc 垃圾回收导致程序卡顿问题(假死)

目录

一、程序卡顿导致的影响

  • 前端页面空白
  • 后端数据重复

二、解决方法

  • 降低堆内存大小
  • 使用合适的垃圾回收器(可以尝试,还未进行测试)
  • 对Survivor区的解读

三、使用到的工具等

  • jvisualvm
  • jstat

总结

  • 花时间测试,寻找答案
  • 调整Xmx降低回收时延时
  • jvm调优是下下策
  • 推荐频繁fullgc博文,后期会归纳进来 >> |

一、程序卡顿导致的影响:

  1. 前端页面空白。如前端页面刷新时无数据(显示空白页,影响他人使用)
  2. 后端数据重复。卡顿导致数据重复插入(卡顿导致线程等待,在垃圾回收完成后执行,重启线程,重复插入数据)
    注:2中提到的重复插入数据目前还没有想到有效的方法进行测试

二、解决方法

  • 降低堆内存大小
    注:降至fullgc回收内存空间产生的卡顿不影响程序正常运行(也就是能够从jvisual监视页面上看不出堆监控曲线会出现卡顿的现象)
  • 使用合适的垃圾回收器(可以尝试,还未进行测试)
    注:jdk8 默认使用并行回收器 -XX:+UseParallelGC 并行回收会导致线程卡顿,目前发现,卡顿效果明显的场景发生在堆内存大小超5G的情况下发生,当调整 -Xmx4g -XX:NewRatio=3 的配置后,并没有再发现卡顿的情况
    注:也可以使用并发垃圾回收器G1(Garbage-First)。这个回收器是充分利用cpu时间片的方式将回收时卡顿的情况尽可能的减少。但目前还没有对他进行使用。如果PG仍然会出现问题,将对此款回收器进行测试。
    图注:CPU监视图中CUP利用率高的部分是由于每次Fullgc时引起的,因为全局垃圾回回收(fullgc)会产生并行线程计算清除无用的内存垃圾。会发生资源竞争的情况
    在这里插入图片描述注:年轻代与老年代同时进行垃圾回收.
    注:图片中S0U, EU, OU, YGC, FGC 分别是fullgc垃圾回收是监测到的结果。列名意思分别是Survivor0区已使用内存大小、Egen区已使用内存大小,老年代已使用内存大小,年轻代垃圾回收次数,老年代垃圾回收次数。
    注:结果中S0U, EU, OU 的内存使用大小被减少,如S0U的 60017.2 减小至0等
    注:结果中YGC, FGC 的GC次数加一
jstat -gc <pid> <时间/毫秒>

在这里插入图片描述

  • 对Survivor区的解读
    注:survior是存活之意,相比与Egen区就是出生后经过Egen区的垃圾回收后留存下来的对象会被保存到Survivor区。在监视上看到的情况会是垃圾回收后的峰谷要比上一个峰谷海拔要高,是因为有对象存活了下来
    在这里插入图片描述

三、使用到的工具等

  • jvisualvm
    使用的jdk8中bin目录下的exe程序
  • jstat
jstat -gc <pid> <时间/毫秒>

总结

1. 花时间测试,寻找答案。
jvm的调优需要花时间进行测试,这其中要找对监测工具,正确使用监测命令和读懂监测命令打印出的指标内容是个关键。
2. 调整Xmx降低回收时延时。
1). jstat打印的指标内容中,S与E区处于年轻代, O区是老年代,通过监控发现,垃圾回收当EU大小1G左右并伴随老年代OU进行垃圾回收时就会出现时长20秒左右的假死(应用程序卡顿)。
2). 通过调整Xmx的大小,由5g 降至 4g情况明显好转,现在便没有再反馈由于卡顿导致的问题
3. jvm调优是下下策。
如果能减少对程序产生的短生命周期,jvm如果运行正常,参数也可以不进行设置,除非像我这种情况有特定的应用场景。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS 语音交互(三) tts

目录 一、模型选择 二、流程 三、核心代码展示 一、模型选择 科大讯飞超拟人识别 二、流程 超拟⼈合成协议 | 讯飞开放平台文档中心 (xfyun.cn) 三、核心代码展示 # coding: utf-8 import _thread as thread import os import time import base64import base64 import …

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕 硬件平台 AT32A403A Board开发板 1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01 产品介绍 推荐一个屏幕资料参考网站 http://www.lcdwiki.com/1.28inch_IPS_Module 1.28寸圆形IPS彩屏&…

2 配置虚拟机

1.打开VM&#xff0c;主页的界面如下&#xff0c;点击"创建新的虚拟机" 2.选择“自定义&#xff08;高级&#xff09;”&#xff0c;然后点击下一步&#xff0c;如下图所示&#xff1a; 3.下图直接点击“下一步” 4.下图的界面上&#xff0c;注意&#xff0c;不要选择…

Windows如何同时登录两个OneDrive个人版账号

初级代码游戏的专栏介绍与文章目录-CSDN博客 目前为止&#xff0c;onedrive只支持同时登录一个账号&#xff08;据说onedrive business支持同时登录多个账号&#xff0c;不过这属于另一个产品了&#xff09;&#xff0c;但是&#xff0c;并非没有别的办法曲线实现&#xff0c;下…

解释器模式(Interpreter Pattern)

解释器模式 说明 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&#xff0c;是指给定一门语言&#xff0c;定义它的语法&#xff08;文法&#xff09;的一种表示&#xff0c;并定义一个解释器&#xff0c;该解释器使用该表示来解释语言中的句子。是一…

在ubuntu20通过docker部署zabbix6

部署Zabbix 6.x服务器在Ubuntu 20.04 LTS系统上使用Docker的方式可以简化安装过程并实现容器化管理。以下是一个简化的步骤指南&#xff1a; 步骤1&#xff1a;安装Docker和Docker Compose 确保你的Ubuntu系统已经安装了Docker和Docker Compose。如果没有&#xff0c;请执行以…

项目中日志采集实践:技术、工具与最佳实践

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一. 选择合适的日志框架 二. 配置日志框架 三. 使用…

Github 2024-03-14 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目9非开发语言项目1TypeScript项目1Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42…

漫途桥梁结构安全监测方案,护航桥梁安全!

桥梁作为城市生命线的重要组成部分&#xff0c;承载着城市交通、物流输送、应急救援等重要职能。然而&#xff0c;随着我国社会经济的飞速发展&#xff0c;桥梁所承载的交通流量逐年增长&#xff0c;其安全性所面临的挑战亦日益严峻。例如恶劣的外部环境、沉重的荷载以及长期使…

17.获取帖子列表

文章目录 一、建立帖子表结构并插入一些测试数据二、通过SQL建立对应的数据模型三、建立路由四、开发GetPostListHandler五、编写logic六、编写dao层七、编译测试运行 一、建立帖子表结构并插入一些测试数据 create table post (id bigint auto_increment primary k…

Mysql 死锁案例4-delete 相邻记录导致死锁

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10),(15,15,15) 事务1事…

easyrecovery破解版百度云(含Mac/Win版)以及EasyRecovery可以恢复哪些设备

软件介绍 当不小心将回收站的文件删除了怎么办&#xff1f;想找回但是不知道怎么找回需要的数据文件&#xff1f;别担心今天小编就为大家介绍一款非常专业的电脑数据文件恢复工具&#xff0c;easyrecovery14是由Ontrack专为电脑用户推出的一款专业的数据恢复软件&…