Java.lang.OutOfMemoryError: GC overhead limit exceeded

缘由

系统是微服务架构,在服务器上跑了近11个微服务,某天发布更新部署新功能,几分钟后发现系统跑着跑着崩了。。。
微服务未启动报错

排查

通过对11个微服务运行打印的日志,发现只有基础微服务日志中出现了 GC overhead limit exceeded 报错信息,然后从报GC异常的上一个报错的异常进行定位,发现是因为某个分页查询导致系统出现岩机的问题;

GC

临时解决

对该查询接口进行优化:

  1. 查询中去除前端不必要的字段,以减少对象实例中的响应数据;
  2. 对该查询进行redis二级缓存,以减轻数据库的请求压力;

防范

这种问题以后肯定还会发生,毕竟11个微服务在一台服务器上运行,资源又有限,目前看来只能从代码上进行防范这个问题了。

如果对服务器的硬件配置进行扩大,应该可以解决这个问题吧。

posted @ 2024-04-05 09:13  changlinlo  阅读(44)  评论(0编辑  收藏  举报