teymon 发表于 2022-6-2 10:51:44

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

本帖最后由 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.01425768.0986368.0   607874.6115776.0   60124.9   1543184.785 0      0.000808    94.181278.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.



启蒙星 发表于 2022-6-2 14:07:08

操作系统占用内存不降低需要在start启动脚本中增加两个参数:-Xmx4G -XX:MaxHeapFreeRatio=40,相关参数含义百度

teymon 发表于 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,所以这些参数没有意义

启蒙星 发表于 2022-6-6 10:11:31

建议:-Xms2g -Xmx4g,初始内存无需那么大,虽然设置最大内存是4g,但jvm申请的物理内存在使用过程中会超过4g,默认要到达到物理内存的70%才会释放内存,你有16g内存到11.2g才会释放,这里的70%就是MaxHeapFreeRatio控制的
页: [1]
查看完整版本: o2Server占用内存过大,导致物理内存不足,服务宕机的问题