# 内存配置不足以支撑在线人数导致溢出

# 背景

客户系统卡死不可用,需要分析原因。

# 操作步骤

1、首先检查Java进程还存在,然后检查bin目录发现存在 java_pidxxx.hprof文件,此文件表示JVM出现了堆内存溢出,需要分析溢出原因:

1750733592703.png

2、同步检查JVM的堆内存配置-Xmx12g,询问项目上用户平均在线为800~1000人,根据服务器资源推荐([参考文档] (opens new window))1000人需要服务器内存48G,JVM堆内存最低配置要求-Xmx24g,客户配置的堆内存比预期少了一半。

1750733651094.png

3、由于客户服务器内存充足,故运维人员通过SeeyonConfig修改JVM内存配置,直接设置成-Xmx32g,然后重启OA。随后观察一周均无问题:

1750733983380.png

4、原则上问题原因是用户的JVM内存申请不足导致,通过增加内存后没问题就可以结项。

但出于稳妥起见,我们依然通过MAT分析了java_pidxxx.hprof文件,根据文件找到疑似内存占用高的地方都是CAP3、CAP4的缓存数据。

研发再结合客户的实际情况,发现客户有上千张表单和配置,故研发评估确实需要申请那么大的缓存数据,无优化空间。

1750734023406.png

1750734398010.png

5、综上,程序不做调整,仅提高JVM内存配置解决。

编撰人:het