当前位置: 首页 > 知识库问答 >
问题:

java - 服务CPU使用没有超过100%,报GC错误根原因是什么?

申黎明
2023-12-29

GC报错的根原因是?

服务内部报错持久层异常
image.png
然后一个sql也陆续报错
image.png
这是这个sql代码中的mybatis-push的构造函数(这张表数据才189条)
image.png
这是其它接口的报错,同样是构造函数的报错
image.png

查询了报错信息的原因,可能是查询的数据量过大,导致内存不足,触发了垃圾回收,但垃圾回收效果不佳,最终导致了 GC overhead limit exceeded 错误。可是程序就最近出现问题,用户数量没有增加很多,查看报错服务的运行情况 就5分钟内cpu的使用率最高为85%。没有内存溢出。

共有2个答案

东郭阳德
2023-12-29


看下是不是代码嵌套太多

屠锐
2023-12-29

内存不够用不关 cpu 的事情,解决方法:

  1. 把 Xmx 之类的参数调大
  2. dump 一份内存,分析内存泄漏情况
 类似资料:
  • 我们在Azure应用程序服务计划中遇到CPU峰值,没有明显的原因。这并不是停止服务的原因,但我们想知道什么时候 例如,CPU百分比连续几天保持在0-1%的范围内,但突然它飙升到98%, 45%, 60%并很快回到0-1%的范围内。内存保持在舒适的40-45%水平不变,没有传入请求,没有Web作业,日志中没有异常,没有故障,服务健康正常,没有我们可以指出的原因。我们试图通过kudu找到答案 该应用程

  • 当我尝试使用正则表达式提取器从Jmeter中的一个站点提取大量数据时,我发现了一些奇怪的事情,Jmeter需要很长的时间(>50分钟) 模板: 匹配号:-->获取所有匹配项 这个正则表达式运行在一个250行的HTML源页面上,因此它可能会在该页面上为这个表达式找到100多个匹配项(正如我所说的,我正在提取一堆数据)

  • 我在服务器上运行一个Java软件,24小时/天。今天早些时候(在服务器区域设置的午夜后几个小时检测到,这是值得注意的,因为它是本月的第一天),我收到了作为客户端连接到该软件的用户报告,称该软件突然变得不可用。JVM从未被中断或重新启动。它上一次重启是在几天前,从那以后它一直正常运行(使用大约5%或更少的CPU,这是正常的)。 这一次,当我检查该进程时,它实际上是在吞噬它可以从服务器上运行的其他应用

  • 问题内容: 我正在用Python做一个机器学习项目,所以我必须做并行预测功能,这是我在程序中使用的功能。 问题是我所有的CPU仅加载20-40%(总和为100%)。我使用multiprocessing.dummy,因为我在酸洗功能中的多处理模块有一些问题。 问题答案: 使用时,您使用的是线程,而不是进程: 复制API的API,但仅不过是模块周围的包装器。 这意味着您受到全局解释器锁(GIL)的限制

  • 问题内容: 我正在使用hibernate插入到所有表均定义为非null的mysql表中。它有一个唯一的主键,并在几列上有另一个唯一的索引。 我收到以下错误: org.springframework.dao.DataIntegrityViolationException:无法执行JDBC批处理更新。SQL [插入MY_TABLE(col1,col2,col3,col4,ID_)值(?,?,?,?,?

  • 第一次使用这个报错有谁知道是怎么回事吗?