测试环境elasticsearch jvm 4G jdk1.8

[serveradm@test-log-server elasticsearch]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
[serveradm@test-log-server elasticsearch]$

-Xms4g
-Xmx4g

jmap -heap pid查看heap内存大小

[serveradm@test-log-server elasticsearch]$ jmap -heap 11516
Attaching to process ID 11516, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b10 using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 348913664 (332.75MB)
MaxNewSize = 348913664 (332.75MB)
OldSize = 3946053632 (3763.25MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 314048512 (299.5MB)
used = 275463512 (262.70247650146484MB)
free = 38585000 (36.797523498535156MB)
87.7136816365492% used
Eden Space:
capacity = 279183360 (266.25MB)
used = 245544536 (234.16951751708984MB)
free = 33638824 (32.080482482910156MB)
87.95099249468163% used
From Space:
capacity = 34865152 (33.25MB)
used = 29918976 (28.532958984375MB)
free = 4946176 (4.717041015625MB)
85.81341047932331% used
To Space:
capacity = 34865152 (33.25MB)
used = 0 (0.0MB)
free = 34865152 (33.25MB)
0.0% used
concurrent mark-sweep generation:
capacity = 3946053632 (3763.25MB)
used = 27565128 (26.28815460205078MB)
free = 3918488504 (3736.961845397949MB)
0.6985492487092482% used

主要信息如下:

MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 348913664 (332.75MB)
MaxNewSize = 348913664 (332.75MB)
OldSize = 3946053632 (3763.25MB)
NewRatio = 2

通过https://www.jianshu.com/p/832fc4d4cb53计算可得:

默认情况下和cpu核数有关:

64M * 4 * 13 / 10 = 332.8M

max_heap / (NewRatio+1) 的值为4096M / 3 = 1365M

符合文章所说的大小

所以,YoungGen 的大小在没有设置的情况下是通过计算得出的,其大小可能与 NewRatio 的默认配置没什么关系而与ParallelGCThreads 的配置有一定的关系。

那么既然 YoungGen 大小有不确定性,我们最好还是通过这些 -XX:NewSize、-XX:MaxNewSize 或者 -xmn 参数设置下

设置参数:

-Xms4g
-Xmx4g
-XX:NewRatio=4
[serveradm@test-log-server elasticsearch]$ jmap -heap 11885
Attaching to process ID 11885, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b10 using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 858980352 (819.1875MB)
MaxNewSize = 858980352 (819.1875MB)
OldSize = 3435986944 (3276.8125MB)
NewRatio = 4
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 773128192 (737.3125MB)
used = 486640352 (464.0964050292969MB)
free = 286487840 (273.2160949707031MB)
62.94432890115072% used
Eden Space:
capacity = 687276032 (655.4375MB)
used = 413461664 (394.3077697753906MB)
free = 273814368 (261.1297302246094MB)
60.15947665115142% used
From Space:
capacity = 85852160 (81.875MB)
used = 73178688 (69.78863525390625MB)
free = 12673472 (12.08636474609375MB)
85.23802779103053% used
To Space:
capacity = 85852160 (81.875MB)
used = 0 (0.0MB)
free = 85852160 (81.875MB)
0.0% used
concurrent mark-sweep generation:
capacity = 3435986944 (3276.8125MB)
used = 25476440 (24.296226501464844MB)
free = 3410510504 (3252.516273498535MB)
0.7414591619589112% used

此时heap信息如下:

MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 858980352 (819.1875MB)
MaxNewSize = 858980352 (819.1875MB)
OldSize = 3435986944 (3276.8125MB)
NewRatio = 4

堆内存查看:

jstat -gc pid 默认单位k
[serveradm@test-log-server elasticsearch]$ jstat -gc 11885
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
83840.0 83840.0 0.0 13404.3 671168.0 644823.4 3355456.0 250260.3 83012.0 76771.6 12156.0 10227.8 21 0.771 4 0.246 1.017
[serveradm@test-log-server elasticsearch]$
  • S0C:survivor0区总内存大小(Capacity)
  • S1C: survivor1区总内存大小
  • S0U: survivor0区当前内存大小(Used)
  • S1U: survivor1区当前内存大小
  • EC:Eden区总内存大小
  • EU:Eden区当前内存大小
  • OC:老年代总内存大小
  • OU:老年代当前内存大小
  • MC:meta data区总内存大小
  • MU:meta data区当前内存大小

所以:

NewSize=S0C+S1C+EC
 OldSize=OC
jvm常用参数:
-Xms :表示java虚拟机堆区内存初始内存分配的大小
-Xmx:表示java虚拟机堆区内存可被分配的最大上限
通常会将-Xms 与-Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源
-XX:newSize:表示新生代初始内存的大小,应该小于-Xms的值
-XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值;
-Xmn:至于这个参数则是对 -XX:newSize、-XX:MaxnewSize两个参数的同时配置,也就是说如果通过-Xmn来配置新生代的内存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn
java虚拟机对非堆区内存配置的两个参数:
-XX:PermSize:表示非堆区初始内存分配大小(方法区)
-XX:MaxPermSize:表示对非堆区分配的内存的最大上限(方法区)

elasticsearch jvm优化的更多相关文章

  1. Elasticsearch JVM Heap Size大于32G,有什么影响?

    0.引言 在规划ES部署的时候,会涉及到data node的分配堆内存大小,而Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了. 设置Heap Size的 ...

  2. 亿级 Elasticsearch 性能优化

    前言 最近一年使用 Elasticsearch 完成亿级别日志搜索平台「ELK」,亿级别的分布式跟踪系统.在设计这些系统的过程中,底层都是采用 Elasticsearch 来做数据的存储,并且数据量都 ...

  3. JVM优化

    1.堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64 ...

  4. JVM 优化问题

    jvm 优化问题 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  5. 一次 ElasticSearch 搜索优化

    一次 ElasticSearch 搜索优化 1. 环境 ES6.3.2,索引名称 user_v1,5个主分片,每个分片一个副本.分片基本都在11GB左右,GET _cat/shards/user 一共 ...

  6. 给hive的metastore做JVM优化

    最近在测试环境下,hive的metastore不稳定,于是做一次JVM优化 在hive-env.sh中 export HADOOP_HOME=/opt/cdh/hadoop-2.6.0-cdh5.14 ...

  7. linux下jvm优化、tomcat调优

    系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...

  8. ElasticSearch性能优化策略【转】

    ElasticSearch性能优化主要分为4个方面的优化. 一.服务器部署 二.服务器配置 三.数据结构优化 四.运行期优化 一.服务器部署 1.增加1-2台服务器,用于负载均衡节点 elasticS ...

  9. 性能优化系列三:JVM优化

    一.几个基本概念 GCRoots对象都有哪些 所有正在运行的线程的栈上的引用变量.所有的全局变量.所有ClassLoader... 1.System Class.2.JNI Local3.JNI Gl ...

随机推荐

  1. 如何用css写一个带斜切角、有边框又有内外阴影的按钮呢?

    如果有一天,UI设计师丢过来一张UI稿,上面有这样一个带有斜切角.有边框还有内外阴影的按钮,你会怎么实现呢?第一反应切图?可是按钮内容.大小都是可变的,那得切多少图啊~Canvas?SVG?No,no ...

  2. 看完我的笔记不懂也会懂----Ajax

    Ajax(Asynchronous JavaScript And XML) - 本次学习所用到的插件 - XML - JSON - 关于AJAX - HTTP协议 - AJAX重点之XMLHttpRe ...

  3. 关于C++中构造函数的常见疑问

    基本概念 我们已经知道在定义一个对象时,该对象会根据你传入的参数来调用类中对应的构造函数.同时,在释放这个对象时,会调用类中的析构函数.其中,构造函数有三种,分别是默认构造函数,有参构造函数和拷贝构造 ...

  4. GNS3通过“云”连接到虚拟机实验

    GNS3通过"云"连接到虚拟机实验并使用wireshark工具对数据分析 观看本文之前注意!!!!! 做这次实验,我所遇到的问题,会全部写在文章结尾,如果读者们遇到问题,可查看. ...

  5. 【Azure 微服务】Service Fabric, 使用ARM Template方式来更新SF集群的证书(Renew SF Certificate)

    问题描述 因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)一文中,描述了因为证书过期而导致了SF集群不可用,并且通过命令dd-AzServiceFabricCluster ...

  6. Idea 报错 xxxx too long

    问题:写单元测试,debug时,报错如下图 解决方法1: 在项目/.idea/workspace.xml文件中添加一行代码如下 <component name="PropertiesC ...

  7. MediaCodec编码结合FFmpeg封装流

    在Android平台上合成视频一般使用MediaCodec进行硬编码,使用MediaMuxer进行封装,但是因为MediaMuxer在某些机型上合成的视频在其他手机上播放会出现问题,而且只支持一个音频 ...

  8. [WC2014]时空穿梭

    这才叫莫比乌斯反演题. 一.题目 点此看题 二.解法 也没有什么好的思路,我们不妨把暴力柿子写出来,我们想枚举直线,但是这道题不能枚举直线的斜率,所以就要用整数来表示直线,我们不妨枚举出发点和终止点的 ...

  9. C语言变量及其生命周期

    变量类型以及作用域和生命周期 变量的作用域 变量的作用域就该变量可以被访问的区间,变量的作用域可以分为以下四种: 进程作用域(全局):在当前进程的任何一个位置都可以访问 函数作用域:当流程转移到函数后 ...

  10. Java学习之路 -- Java怎么学?

    @ 目录 java基础怎么学? 学完基础学什么? 几个常用框架学完学什么? MQ JVM的知识跑不掉 微服务等等 其他 数据结构和算法 java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++ ...