YoungGC 停顿超长时间调优

news2024/11/28 22:34:32

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

今年双11,我们的埋点服务,收到了大量的服务超时告警,通过下面的监控图可以看到:超时量突然大面积增加,埋点接口的QPS达到1万,接口最大的响应时间到达12秒。以下是埋点服务的系统APM 监控信息。


一、检查监控

收到告警后,我们第一时间查看了监控系统,立马发现了YoungGC耗时过长的异常。最长甚至达到了惊人的25秒多,GC次数也达到2K次以上。

由于YGC期间程序会Stop The World,埋点接口功能巨简单,就是根据事件给各个kafka发送消息。但埋点接口耗时达到了几百毫秒,

二、确认JVM配置

-Xms6144m 
-Xmx6144m 
-Xmn3072m 
-XX:MetaspaceSize=512m 
-XX:MaxMetaspaceSize=512m 
-XX:CompressedClassSpaceSize=512m 
-XX:SurvivorRatio=8 
-XX:MaxTenuringThreshold=5 
-XX:GCTimeRatio=19 
-Xnoclassgc -XX:+DisableExplicitGC 
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSFullGCsBeforeCompaction=0 
-XX:-CMSParallelRemarkEnabled 
-XX:CMSInitiatingOccupancyFraction=70 
-XX:SoftRefLRUPolicyMSPerMB=0 
-XX:+PrintClassHistogram -XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintHeapAtGC 
-Xloggc:/opt/logs/gc.log 
-Dlog4j2.formatMsgNoLookups=true

可以看到堆内存为6G,新生代和老年代均为3G,新生代采用ParNew收集器,老年代采用UseConcMarkSweepGC收集器。 

三、调整JVM配置 

-Xms6144m 
-Xmx6144m 
-Xmn3072m 
-XX:MetaspaceSize=512m 
-XX:MaxMetaspaceSize=512m 
-XX:CompressedClassSpaceSize=512m 
-XX:NewRatio=4 
-XX:SurvivorRatio=4 
-XX:GCTimeRatio=19 
-XX:+UseParallelGC 
-XX:ParallelGCThreads=4 
-XX:+UseParallelOldGC 

调整JVM参数,新生代采用UseParallelGC收集器,老年代采用UseParallelOldGC收集器。  JVM监控数据如下,发现GC的平均次数和GC平均耗时下降巨大。

 

  • UseParNewGC:并发串行收集器,它是工作在新生代的垃圾收集器,它只是将串行收集器多线程化,除了这个并没有太多创新之处,而且它们共用了相当多的代码。它与串行收集器一样,也是独占式收集器,在收集过程中,应用程序会全部暂停。但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。
  • UseParallelGC:并行收集器,同时运行在多个cpu之间,物理上的并行收集器,跟上面的收集器一样也是独占式的,但是它最大化的提高程序吞吐量,同时缩短程序停顿时间,另外它不能与CMS收集器配合工作。

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

Python语言高级实战-内置函数super()的使用之类的单继承(附源码和实现效果)

实现功能 super()是一个内置函数,用于调用父类的方法。super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用&#xf…

微服务架构——笔记(3)Eureka

微服务架构——笔记(3) 基于分布式的微服务架构 本次笔记为 此次项目的记录,便于整理思路,仅供参考,笔者也将会让程序更加完善 内容包括:1.支付模块、2.消费者订单模块、支付微服务入驻Eureka、Eureka集群…

解决SpringBoot项目端口被占用的问题

问题描述: 在Window环境下,运行SpringBoot 项目时,出现端口被占用的问题: 解决方案: 1. 查看对应端口的进程号 netstat -ano | findstr 80802. 查看对应进程号的信息 tasklist | findstr 477963. 根据进程号 kill 进程…

01-Spring中事务的实现之编程式事务和声明式事务,以及事务的属性之传播行为,隔离级别,事务的回滚

银行账户转账异常 需求: 实现act-001账户向act-002账户转账10000,要求两个账户的余额一个减成功一个加成功,即执行的两条update语句必须同时成功或失败 实现步骤 第一步: 引入项目所需要的依赖 <?xml version"1.0" encoding"UTF-8"?> <proj…

地址的层次性

地址的层次性 当地址总数并不是很多的情况下&#xff0c;有了唯一地址就可以定位相互通信的主体。然而当地址的总数越来越多时&#xff0c;如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。其实&#xff0c;在使用电…

万宾科技智能井盖监测仪器助力建设数字化城市

市政公共设施建设在近几年来发展迅速&#xff0c;市政设备的更新换代&#xff0c;资产管理等也成为其中的重要一项。在市政设施建设过程中&#xff0c;井盖也是不可忽视的&#xff0c;一方面&#xff0c;根据传统的管理井盖模式来讲&#xff0c;缺乏有效的远程监控管理方法和手…

Spring基础(1):两个概念

最近看了点Spring的源码&#xff0c;于是来稍微扯一扯&#xff0c;希望能帮一部分培训班出身的朋友撕开一道口子&#xff0c;透透气。 广义上的Spring指的是Spring整个项目&#xff0c;包含SpringBoot、SpringCloud、SpringFramework、SpringData等等&#xff0c; 本系列文章…

linux三种软件安装方式

文章目录 前言一、安装jdk(使用rpm安装)二、Tomcat安装(解压缩方式)三、安装Docker(yum安装) 推荐四、其实我们也可以宝塔安装(傻瓜式一键安装) 前言 之前已经讲解了一些linux的基本使用&#xff0c;现在我们来配置java环境以及安装docker linux讲解链接 一、安装jdk(使用rpm安…

浏览器无图模式省流量经验

【备注】本文适合于那些用自购上网卡&#xff08;非单位报销&#xff09;、流量费花的心痛、平日里抠抠搜搜的diaosi人群&#xff01;流量自由人群请关闭退出&#xff01; 近日图年包流量费便宜&#xff0c;从某东平台上买了一个号称新款usb上网卡&#xff0c;只用了2天时间&a…

分享一下微信小程序里怎么添加社区团购功能

随着互联网的快速发展&#xff0c;线上购物已经成为我们日常生活的一部分。而在这个数字化时代&#xff0c;微信小程序作为一种便捷的电商渠道&#xff0c;正逐渐成为新的趋势。其中&#xff0c;社区团购功能更是受到广大用户的热烈欢迎。本文将探讨如何在微信小程序中添加社区…

【C/PTA】循环结构进阶练习(二)

本文结合PTA专项练习带领读者掌握循环结构&#xff0c;刷题为主注释为辅&#xff0c;在代码中理解思路&#xff0c;其它不做过多叙述。 7-1 二分法求多项式单根 二分法求函数根的原理为&#xff1a;如果连续函数f(x)在区间[a,b]的两个端点取值异号&#xff0c;即f(a)f(b)<0…

Python 多线程、多进程的详细使用教程

引言&#xff1a; 在现代计算机中&#xff0c;使用多线程和多进程可以充分利用多核处理器的优势&#xff0c;提高程序的性能和响应能力。Python作为一门简洁而强大的编程语言&#xff0c;提供了丰富的多线程和多进程管理工具。本教程将详细介绍Python中多线程和多进程的使用方…

谷歌浏览器默认https 怎么关闭

#然后把网址从 https 改成http 回车即可

关于springboot+vue的excel导入导出

在做项目的过程中&#xff0c;外面经常会遇到一个问题&#xff0c;怎么才能把excel表中的数据实现批量的导入导出&#xff0c;使用的是EasyExcel进行操作。 一、项目前准备 1、依赖导入 在pom文件中添加对应的依赖 <dependency><groupId>com.alibaba</group…

视频文件如何添加图片或文字水印?

你是否担心&#xff0c;可能有人盗取你辛苦创作的视频并将其占为己有&#xff0c;从而影响浏览量和收入&#xff1f;或者你只是想为你的视频打造品牌&#xff0c;希望可以产生一些额外的关注和宣传。那么&#xff0c;为你的视频文件添加水印都是很有必要的。 第一部分&#xf…

Linux 内核中根据文件inode号获取其对应的struct inode

文章目录 前言一、简介二、iget_locked2.1 简介2.2 内核中使用2.3 LKM demo 三、ext4_iget3.1 简介3.2 LKM demo 前言 文件inode号和struct inode结构体请参考&#xff1a; Linux文件路径&#xff0c;目录项&#xff0c;inode号关联 Linux文件系统 struct inode 结构体解析 一…

selenium自动化测试入门 —— 键盘鼠标事件ActionChains

在使用 Selenium WebDriver 做自动化测试的时候&#xff0c;会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作&#xff1b;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在 WebDeriver 中&#xff0c;有一个专门的类来负责实现这些测试场…

【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解前言VggNet讲解感受野感受野的计算公式3x3的卷积核的使用VggNet模型结构 VGGnet Pytorch代码完整代码总结 前言 Vgg(Visual Geometry Group)是…

爱思华宝邮件服务器本地文件包含漏洞

爱思华宝邮件服务器本地文件包含漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: title"Icewarp web klient" 漏洞复现1. 构造poc2. 读取文件 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平。 任何人不…

mysql主从架构

mysql主从架构是一套非常基础的高可用架构&#xff0c;主要依赖复制技术来实现。 1.复制原理 mysql复制功能主要使用三个线程实现&#xff1a; 1.Binary log dump thread&#xff08;二进制日志转储线程&#xff09;:当副本连接时发送二进制日志 2.Replication I/O receiver …