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.
操作系统占用内存不降低需要在start启动脚本中增加两个参数:-Xmx4G -XX:MaxHeapFreeRatio=40,相关参数含义百度 本帖最后由 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,所以这些参数没有意义
建议:-Xms2g -Xmx4g,初始内存无需那么大,虽然设置最大内存是4g,但jvm申请的物理内存在使用过程中会超过4g,默认要到达到物理内存的70%才会释放内存,你有16g内存到11.2g才会释放,这里的70%就是MaxHeapFreeRatio控制的
页:
[1]