本文介绍: 在生产环境我们会遇到一些问题,此文主要记录并复盘一下当时项目中的实际问题解决过程

在生产环境我们会遇到一些问题,此文主要记录并复盘一下当时项目中的实际问题解决过程

最初系统上线后都比较正常风平浪静的。在系统运行了一段时间后,业务量上升后,生产上发现java应用内存占用过高,服务器总共64G,发现每个SpringBoot占用近12G的内存我们项目采用服务架构,有多个springboot应用。一下子内存就不够用了,springboot出现假死了。

由于当时生产没有截图我用本机模拟类似的情况。

  • 最大大小(-Xmx):通常为物理内存的1/4。
  • 初始堆大小(-Xms):通常为物理内存的1/64。
  1. 检查JVM参数: 如果在生产环境启动Spring Boot没有设置JVM参数使用默认的JVM配置,可能会导致性能问题和资源浪费。优化JVM参数,根据应用程序需求服务器配置进行调整。
  2. 观察内存使用情况: 使用监控工具或者操作系统提供的工具,观察Java应用的内存使用情况,包括堆内存、非堆内存、垃圾回收等。
  3. 分析GC: 如果发现内存问题,可以分析GC日志以了解垃圾回收的情况,包括频率时间等。
  4. 合理设置堆内存大小: 根据应用程序需求服务器的物理内存,合理设置堆内存的大小,避免过大或过小导致性能问题。
  5. 考虑使用内存分析工具: 使用工具如VisualVM、MAT等,对应程序行内分析,找出可能存在的内存泄漏或者大对象

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注