# 内存配置不足以支撑在线人数导致溢出
# 背景
客户系统卡死不可用,需要分析原因。
# 操作步骤
1、首先检查Java进程还存在,然后检查bin目录发现存在 java_pidxxx.hprof
文件,此文件表示JVM出现了堆内存溢出,需要分析溢出原因:
2、同步检查JVM的堆内存配置-Xmx12g
,询问项目上用户平均在线为800~1000人,根据服务器资源推荐([参考文档] (opens new window))1000人需要服务器内存48G,JVM堆内存最低配置要求-Xmx24g
,客户配置的堆内存比预期少了一半。
3、由于客户服务器内存充足,故运维人员通过SeeyonConfig修改JVM内存配置,直接设置成-Xmx32g
,然后重启OA。随后观察一周均无问题:
4、原则上问题原因是用户的JVM内存申请不足导致,通过增加内存后没问题就可以结项。
但出于稳妥起见,我们依然通过MAT分析了java_pidxxx.hprof
文件,根据文件找到疑似内存占用高的地方都是CAP3、CAP4的缓存数据。
研发再结合客户的实际情况,发现客户有上千张表单和配置,故研发评估确实需要申请那么大的缓存数据,无优化空间。
5、综上,程序不做调整,仅提高JVM内存配置解决。
编撰人:het
