zoukankan      html  css  js  c++  java
  • 一次JVM内存调整

    单台服务器8G内存,2核

    系统里装了redis, rocketmq, mysql, zookeeper, 还有20个左右的微服务,每个微服务的jvm 参数 -Xms128m -Xmx256m -Xmn64m -XX:PermSize=64m -XX:MaxPermSize=128m

    redis,rocketmq,zookeeper 基本是用最小配置

    执行free 只有100m左右的free内存,经常执行一些java命令就返回无法分配内存错误

    通过ps -aux|sort -4knr|head -10  查看10个最占用内存的进程, 基本占用内存比是5%左右(300多M)

    PS:300m是我们使用的堆内存(128m or 256m)+ 非堆内存(64m)

    PS2:如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值, 所以可能是128M,也可能是256M

    由于这些微服务使用频率不会太高,特别一些CMS服务的微服务,占用内存低,使用内存低,即使GC STW也影响不大,决定要调整参数,为系统腾出更多内存

    通过 jstat -gc pid命令,可以看每个java进程的内存(新生代,老年代,永久代)的使用状况, 发现不少老年代都占用100M以上,调整JVM参数为 -Xms128m -Xmx128m -Xmn64m -XX:PermSize=64m -XX:MaxPermSize=64m

  • 相关阅读:
    Flink的入门
    Hadoop/Spark相关面试问题总结
    什么事分布式系统
    分布式的本质
    spark的shuffle机制
    Yarn的资源隔离机制
    hadoop和spark相关参数的配置
    分布式常问问题
    转一篇分布式消息队列的文章
    jquery 重要知识点总结
  • 原文地址:https://www.cnblogs.com/devilwind/p/7128084.html
Copyright © 2011-2022 走看看