查看: 4941|回复: 3

o2Server占用内存过大,导致物理内存不足,服务宕机的问题

升级   1.85%

15

主题

20

回帖

185

积分

注册会员

Rank: 2

积分
185
发表于 2022-6-2 10:51:44 | 显示全部楼层 |阅读模式
本帖最后由 teymon 于 2022-6-2 10:56 编辑

内存去哪了呢?堆栈内存没有溢出,没有FullGC ,不是堆栈内存溢出,而是物理内存被占满了,   16G内存只启动了o2Server服务
怀疑其他占进程占用内存,当杀掉o2server进程后,内存立即释放干净了。
所以怀疑o2server有内存泄露,占用了直接物理内存,没有使用jvm的堆栈内存。
然而,设置XX:MaxDirectMemorySize=3g   并没有任何效果,内存还是会被占满。
特别是使用应用管理 的导入导出流程应用功能和 备份数据,导出导入功能时,有时候导一半,服务挂了,内存不够。
怀疑点:java11的 js解析引擎大量占用物理内存不释放,没找到有效解决办法。

请管理员大佬帮忙协调运维大拿瞧瞧,非常感谢!

                  total        used        free      shared      buff/cache   available
Mem:          14951      12818      1018         735        1115            45



S0C    S1C       S0U    S1U           EC                 EU             OC               OU            MC           MU            CCSC        CCSU      YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT   
0.0   18432.0    0.0    18432.0     2269184.0   1632256.0 1906688.0  1425768.0  986368.0   607874.6  115776.0   60124.9   1543  184.785 0        0.000    808    94.181  278.966



/jvm/arm_java11/bin/java -Dnashorn.args=--no-deprecation-warning --add-exports jdk.scripting.nashorn/jdk.nashorn.internal.runtime=ALL-UNNAMED --add-exports jdk.scripting.nashorn/jdk.nashorn.internal.runtime.arrays=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -javaagent:/data/oAserver/console.jar -server -Djava.awt.headless=true -Dlog4j2.formatMsgNoLookups=true -Xms4g -Xmx4g -XX:MaxDirectMemorySize=3g -Duser.timezone=GMT+08 -XX:+HeapDumpOnOutOfMemoryError -jar /data/oAserver/console.jar


Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000716000000, 268435456, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 268435456 bytes for committing reserved memory.



回复

使用道具 举报

升级   100%

0

主题

662

回帖

2

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2
发表于 2022-6-2 14:07:08 | 显示全部楼层
操作系统占用内存不降低需要在start启动脚本中增加两个参数:-Xmx4G -XX:MaxHeapFreeRatio=40,相关参数含义百度
回复

使用道具 举报

升级   1.85%

15

主题

20

回帖

185

积分

注册会员

Rank: 2

积分
185
发表于 2022-6-2 16:01:29 | 显示全部楼层
本帖最后由 teymon 于 2022-6-2 16:02 编辑
启蒙星 发表于 2022-6-2 14:07
操作系统占用内存不降低需要在start启动脚本中增加两个参数:-Xmx4G -XX:MaxHeapFreeRatio=40,相关参数含 ...

指定 jvm heap 在使用率大于 n 的情况下 ,heap 进行扩张 ,Xmx==Xms 的情况下无效 , 如 :-XX:MaxHeapFreeRatio=70

启动参数已经配置了  -Xms4g -Xmx4g  

那这个就不会生效了,-XX:MaxHeapFreeRatio
现在的情况是堆内存并没有溢出,没有oom异常,没有FullGC,所以这些参数没有意义
回复

使用道具 举报

升级   100%

0

主题

662

回帖

2

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2
发表于 2022-6-6 10:11:31 | 显示全部楼层
建议:-Xms2g -Xmx4g,初始内存无需那么大,虽然设置最大内存是4g,但jvm申请的物理内存在使用过程中会超过4g,默认要到达到物理内存的70%才会释放内存,你有16g内存到11.2g才会释放,这里的70%就是MaxHeapFreeRatio控制的
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread