整理了近期在项目上做的一些技术研究,希望与大家共同探讨交流。
如下参数建议是在长时间的生产环境运行中得出的参数配置建议。曾在多个大型项目中使用,单个项目中最大EDAS节点数量超过500个。虽然可以默认不优化参数,但是,企业生产实践中,仍建议配置优化,已达到最佳的服务状态。
EDAS应用可在EDAS控制台配置JVM参数,建议标准如下,可参考主机配置和java版本进行选择:
提示:
如下参数是在没有其他消耗内存的进程运行状态下的JVM配置
MaxMetaspaceSize与MaxPermSize根据Java版本选择使用
年轻代GC策略使用ParNew
4G内存服务器
-Xms1024m === 初始堆内存
-Xmx2048m === 最大堆内存
-XX:MaxMetaspaceSize=1024m #java8 === 最大元空间
-XX:MaxPermSize=1024m #java7
-XX:+UseConcMarkSweepGC === 使用CMS收集器(年轻代gc策略使用ParNew)
-XX:+PrintGC === 输出GC日志(输入gc日志路径默认开启)
-XX:+PrintGCDateStamps === 输出GC日志的形式(输入gc日志路径默认开启)
-Xloggc:/home/admin/gc.log === GC日志路径
-XX:+UseGCLogFileRotation === 启用GC日志文件的自动转储(输入gc日志路径默认开启)
-XX:NumberOfGCLogFiles=3 === 文件个数
-XX:GCLogFileSize=300m === 文件大小
-XX:+HeapDumpOnOutOfMemoryError === OOM 内存溢出时dump内存(配置dump路径自动开启)
-XX:HeapDumpPath=/home/admin === dump路径
8G内存服务器
-Xms2048m
-Xmx4096m
-XX:MaxMetaspaceSize=1024m #java8
-XX:MaxPermSize=1024m #java7
-XX:+UseConcMarkSweepGC
-XX:+PrintGC
-XX:+PrintGCDateStamps
-Xloggc:/home/admin/gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=3
-XX:GCLogFileSize=300m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/admin
16G及以上内存服务器
-Xms4096m
-Xmx8192m
-XX:MaxMetaspaceSize=1024m #java8
-XX:MaxPermSize=1024m #java7
-XX:+UseConcMarkSweepGC
-XX:+PrintGC
-XX:+PrintGCDateStamps
-Xloggc:/home/admin/gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=3
-XX:GCLogFileSize=300m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/admin