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

打印大对象日志导致GC问题的解决

内容:

  • rpc调用外部服务时,需要将req和resp的信息打印出来,以便于排查问题。
  • 但是有的rpc服务的resp信息过于庞大,比如resp中有List<>信息,list很大很大时
  • 会导致log.info打印信息时,产生GC,影响业务

通过将大对象拆分为小对象,解决GC耗时过长问题,进而解决GC过长对业务的影响(TP999过长导致超时、慢sql)等

1、背景

正常情况下,2M、3M就为大对象。会直接被分配至old region。如果此大对象为日志对象,被频繁的加入老年代,会引起Full Gc,影响接口性能或db性能。

2、解决

将大对象,part拆分为小对象再打印,这样young gc更快,影响更小

3、code实现(以List的拆分为例)

@Slf4j
@Component
public class PartLogUtils {public <V> void partLog(List<V> info,int count,Logger logger,String format) {List<List<V>> result = splitInfo(info, count);logInfo(result, logger, format);}private <V> List<List<V>> splitInfo(List<V> info, int count) {List<List<V>> result = Lists.newArrayList();if (CollectionUtils.isEmpty(info) || info.size() < count) {result.add(info);return result;}List<V> temp = Lists.newArrayList();int index = 0;for (V item : info) {index++;temp.add(item);if (index % count == 0) {result.add(temp);temp = Lists.newArrayList();}}if (temp.size() > 0) {result.add(temp);}return result;}private <V> void logInfo(List<V> infoList, Logger logger, String format) {for (V item : infoList) {logger.info(format, GsonUtils.toJsonStr(item));}}}

类A中使用

private  final  static Logger logger = LoggerFactory.getLogger(A.class);PartLogUtils.partLog(resp, 2000, logger,"queryUserInfo:[{}]");

4、打印Map对象的优化同理

相关文章:

打印大对象日志导致GC问题的解决

内容&#xff1a; rpc调用外部服务时&#xff0c;需要将req和resp的信息打印出来&#xff0c;以便于排查问题。但是有的rpc服务的resp信息过于庞大&#xff0c;比如resp中有List<>信息&#xff0c;list很大很大时会导致log.info打印信息时&#xff0c;产生GC&#xff0c…...

【Docker】学习笔记

1. docker基本操作 镜像搜索 // 直接搜索镜像资源 docker search mysql // 搜索过滤 docker search --filter "is-officialtrue" mysql // 官方发布镜像拉取镜像 docker pull mysql查看本地镜像 docker images删除本地镜像 docker rmi mysql // 强制删除镜像 d…...

网易云信4K 8K RTC助力远程医疗的技术实践

// 编者按&#xff1a;随着近年来国家关于缓解医疗资源分配不均的一系列政策出台&#xff0c;远程医疗作为平衡医疗资源分配的有力手段&#xff0c;目前正处于强劲发展阶段。网易云信运用超高清RTC视频技术助力医疗行业实现了远程高清视频病理分析和手术示教等能力。LiveVide…...

【排序算法】冒泡排序、插入排序、归并排序、希尔排序、选择排序、堆排序、快速排序

目录 几大排序汇总 1.冒泡排序 性能: 思路和代码: 2.插入排序 性能: 思路和代码: 3.归并排序 性能: 思路和代码: 4.希尔排序 性能: 思路和代码: 5.选择排序 性能: 思路和代码: 6.堆排序 性能: 思路和代码: topK问题 7.快速排序 性能: 思路和代码: 几大排…...

Linux学习笔记-应用层篇

1、Linux进程、线程概念/区别 Linux进程和线程是计算机系统中两种不同的资源分配和调度单位。 进程是计算机系统进行资源分配和调度的基本单位&#xff0c;也被认为是正在运行的程序。在面向线程的计算机结构中&#xff0c;进程是线程的容器。进程拥有独立的内存和系统资源&am…...

MySQL数据库的存储引擎

目录 一、存储引擎概念 二、存储引擎 2.1MyISAM 2.11MyISAM的特点 2.12MyISAM表支持3种不同的存储格式&#xff1a; 2.2 InnoDB 2.21InnoDB特点介绍 三、InnoDB与MyISAM 区别 四、怎么样选择存储引擎 五、查看存储引擎 六、查看表使用的存储引擎 七、修改存储引擎 …...

Linux-多路转接-epoll

epoll 接口认识epoll_createepoll_ctlepoll_wait epoll工作原理在内核中创建的数据结构epoll模型的一个完整工作流程 epoll工作模式LT-水平触发ET-边缘触发两种方式的对比 epoll的使用场景对于poll的改进惊群效应什么是惊群效应如何解决惊群效应原子操作/mutex/spinlock如何选择…...

Java面试被问了几个简单的问题,却回答的不是很好

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; 前言 前几天参加了…...

概率论几种易混淆的形式

正态分布标准型 x − μ σ \frac{x - \mu}{\sigma} σx−μ​ 大数定律形式 P { X ≤ ∑ i 1 n x i − n μ n σ 2 } ∫ − ∞ X 1 2 π e − x 2 2 d x P\{X \le \frac{\sum_{i 1}^{n}x_i -n\mu}{\sqrt{n\sigma^2}} \} \int _{-\infty}^{X}\frac{1}{\sqrt{2\pi}}e^{-\fr…...

PyTorch数据增强后的结果展示

from PIL import Image import torch from torchvision import transformstrans transforms.Compose([transforms.ToTensor(), transforms.RandomErasing(p0.9, value 120, inplaceTrue)]) # 这里Compose是所做的变换img_path 02-56-45-060-1454-camra1.bmp img Image.open…...

指定程序在哪个GPU上运行

摘要&#xff1a; 当本地&#xff08;或服务器&#xff09;有个多个GPU时&#xff0c;需要指定程序在指定GPU上运行&#xff0c;需要做以下设置。 目录 一、在终端上指定GPU二、在程序中指定GPU三、系统变量指定GPU四、pytorch中指定GPU 一、在终端上指定GPU 在终端运行程序时…...

Linux CentOS7 vim多文件编辑

使用vim编辑多个文件&#xff0c;十分常用的操作。本文从打开、显示、切换文件到退出&#xff0c;进行简单讨论。 一、打开文件 1.一次打开多个文件 vim还没有启动的时候&#xff0c;在终端里输入vim file1 file2 … filen便可以打开所有想要打开的文件。 执行命令 vim fil…...

PAT甲级真题1153: 解码PAT准考证

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

linux信号

title: linux信号 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linux tags: SIGHUP 终止进程 终端线路挂断[喝小酒的网摘]http://blog.hehehehehe.cn/a/16999.htm SIGINT 终止进程 中断进程 SIGQUIT 建立CORE文件终止进程&#xff0c;并且生…...

JavaWeb开发-05-SpringBootWeb请求响应

一.请求 1.Postman 2.简单参数 ​ package com.wjh.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/ R…...

Ubuntu下载

参考文档&#xff1a; 镜像文件&#xff1a;VMware下安装ubuntu 16.04&#xff08;全步骤&#xff09;_vmwaubuntu-16.04.4-desktop-amd64.iso_ST0new的博客-CSDN博客 vmware tools使用安装&#xff1a;VMware——VMware Tools的介绍及安装方法_William.csj的博客-CSDN博客 …...

Vue 的组件加载顺序和渲染顺序

1、结论先行 组件的加载顺序是自上而下的&#xff0c;也就是先加载父组件&#xff0c;再递归地加载其所有的子组件。 而组件渲染顺序是按照深度优先遍历的方式&#xff0c;也就是先渲染最深层的子组件&#xff0c;再依次向上渲染其父组件。 2、案例 下面是一个简单的示例代…...

leetcode Top100(17)矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 输入&…...

论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)

目录 1.作者提出的问题及解决方向 2.延深-用如何用强化学习对机器人进行控制 2.1思路 2.2DQN和DDPG在机器人控制中的应用 3.解决方案 3.1思路 3.2实验 3.3创新点 4.展望 1.作者提出的问题及解决方向 目的&#xff1a;使机械臂在非结构化环境下实现端到端的自主学习控制…...

快速安装keepalive

快速安装keepalive #安装 yum install keepalived -y# 查看版本&#xff1a; rpm -q -a keepalived#修改配置文件 vim /etc/keepalived.conf虚拟 ip :随意选一个&#xff0c;不被占用的ip即可。...

nginx实现反向代理实例

1 前言 1.1 演示内容 在服务器上访问nginx端口然后跳转到tomcat服务器 1.2 前提条件 前提条件&#xff1a;利用docker安装好nginx、tomcat、jdk8&#xff08;tomcat运行需要jdk环境&#xff09; 只演示docker安装tomcat&#xff1a; 默认拉取最新版tomcat docker pull t…...

使用Freemarker填充模板导出复杂Excel,其实很简单哒!

文章目录 1. 需求分析2. 对象生成3. 列表插值4. 另存xml格式化5. ftl修改6. 程序转化7. 犯的错误8. 总结 1. 需求分析 类似这样的一个表格 我们需要从数据库中查询对应的数据&#xff0c;将其汇总进该表格&#xff0c;并且可能还需要复制表格项&#xff0c;我这个案例中没有&a…...

windows环境下安装logstash同步数据,注册系统服务

windows环境下安装logstash同步数据&#xff0c;注册系统服务 此方法适用于Windows环境&#xff0c;同一个配置文件配置多个管道&#xff0c;并且配置系统服务&#xff0c;防止程序被杀进程 一、安装logstash &#xff08;1&#xff09;下载压缩包&#xff0c;解压后修改con…...

java服务内存说明及配置详解

java进程内存 JVM内存分布图: 【java进程内存】【堆外内存】 【jvm堆内存】 【堆外内存】 【Metaspace】 【Direct Memory】【JNI Memory】【code_cache】 … 堆外内存泄漏的排查在于【本地内存&#xff08;Native Memory&#xff09;】【Direct Memory】【JNI Memory】 一般…...

Mybatis-MyBatis的缓存

Mybatis-MyBatis的缓存 一、MyBatis的一级缓存二、MyBatis的二级缓存二级缓存的相关配置 三、MyBatis缓存查询的顺序 一、MyBatis的一级缓存 一级缓存是SqlSession级别的&#xff0c;通过同一个SqlSession查询的数据会被缓存&#xff0c;下次查询相同的数据&#xff0c;就 会从…...

计算机组成原理之硬件的基本组成,深入介绍两大计算机结构体系,从底层出发认识计算机。

大家好&#xff0c;欢迎阅读《计算机组成原理》的系列文章&#xff0c;本系列文章主要的内容是从零学习计算机组成原理&#xff0c;内容通俗易懂&#xff0c;大家好好学习吧&#xff01;&#xff01;&#xff01; 更多的优质内容&#xff0c;请点击以下链接查看哦~~ ↓ ↓ ↓ …...

二十五、MySQL事务的四大特性和常见的并发事务问题

1、事务的四大特性 2、常见的并发事务问题 &#xff08;1&#xff09;并发事务问题分类&#xff1a; &#xff08;2&#xff09;脏读&#xff1a; 一个事务正在对一条记录做修改&#xff0c;在这个事务完成并提交前&#xff0c;这条记录的数据就处于不一致的状态&#xff1b;…...

辨析常见的医学数据分析(相关性分析回归分析)

目录 1 常见的三种分类结果&#xff1f; 2 什么是相关性分析&#xff1f; 相关性分析的结果怎么看&#xff1f; 3 什么是回归分析&#xff1f; 1&#xff09;前提 2&#xff09;常见的回归模型 4 对于存在对照组实验的医学病例如何分析&#xff1f; 1&#xff09;卡方检验…...

SpringBoot项目中只执行一次的任务写法

SpringBoot项目中只执行一次的任务写法 有时候我们需要进行初始化工作&#xff0c;就说明只要进行一次的工作&#xff0c;那么&#xff0c;在Springboot项目中如何做到任务只进行一次呢 利用定时任务 在Spring Boot项目中&#xff0c;你可以使用Spring框架提供的Scheduled注解…...

TCK、TMS、TDI、TDO的含义

这四个信号是JTAG&#xff08;Joint Test Action Group&#xff09;界面的一部分。JTAG是一种用于测试和验证集成电路和印刷电路板的技术&#xff0c;也用于进行设备编程和调试。这四个信号分别是&#xff1a; TCK (Test Clock)&#xff1a; 意义&#xff1a;测试时钟&#xff…...

动漫培训/搜索引擎优化文献

1.Lombok是什么 现在看一下Lombok官方对其进行的解释&#xff1a;Lombok官网&#xff1a;https://projectlombok.org 第一句话&#xff0c;Lombok项目是一种自动接通你的编辑器和构建工具的一个Java库。接着&#xff0c;不用再一次写额外的getter或者equals方法。翻译到这里其实…...

免费的做网站/google 官网入口

最近闲来之余&#xff0c;看了一些开源的类库&#xff0c;看到有些类库喜欢用TextWriter类来记录相关的字符串数据&#xff0c;感到比较好奇&#xff0c;为啥不用StringBuilder类对象。于是在网上搜索了一番&#xff0c;总结了相关笔记。StringBuilder类在 .net 中,字符串作为一…...

网站管理后台模板/网络推广seo怎么弄

利用舍选抽样法生成随机数.pdf2013年11月 重庆师范大学学报(自然科学版) Nov-2013笙!!鲞笙!塑 !!!&#xff1a;!!!!!&#xff1a;!!!&#xff1a;&#xff1a;!!!!!呈!!竺!竺!些!&#xff1a;竺!!!!!!&#xff1a;!!!!!!!!竺!兰兰竺!!利用舍选抽样法生成随机数”王丙参1&#x…...

专业做家政网站/域名解析ip

项目启动出现这个异常&#xff1a; Mapped Statements collection already contains value for 我这边的原因是在 Mapper 中出现了重载方法。后来想了一下&#xff0c;也很好理解&#xff0c;MyBatis 将方法名当作 id 进行映射&#xff0c;所以就会出现这个异常。...

建设网站征集图片的通知/windows优化大师功能

chain 用来处理Action链&#xff0c;将一个action的执行与另外一个配置好的action串连起来。用第一个action的getter方法和第二个action的setter方法来完成action之间属性的复制。 com.opensymphony.xwork2.ActionChainResult dispatcher 用来转向…...

嘉兴优化网站价格/白银网站seo

Python没有隐私模型&#xff0c;没有像C &#xff0c;C&#xff03;或Java这样的访问修饰符。没有真正的“受保护”或“私有”属性。 带有前导双下划线但无尾随双下划线的名称将被重编&#xff0c;以防止继承时出现冲突。子类可以定义自己的__private()方法&#xff0c;并且不会…...