转载

探索ElasticSearch-无任何索引数据的ElasticSearch状态(八)

之前做了一些简单的 ElasticSearch 的基准测试,但是现在看来还是有两个方面的缺点。一个是不够全面,只是简单测试了下3种线程场景,另外一个是可能机器环境,感觉一直没有压上去。之后打算重新搞一下基准测试。今天想来看看一个基本上没有索引数据的 ElasticSearch 的内存占用和其他相关指标(Segment,Lucene...)的状态。这样做到在最少的环境下心里有个数,感觉还是非常重要的。很多人都忘记了, 其实计算机是一种科学 。这种应该是控制变量法吧?

通过本文,可以让你得到以下 ElasticSearch 的状态。

  • 初始JVM占用大小和变化幅度

ElasticSearch

初始环境

目的是想要搭建一个 纯粹ElasticSearch 的环境。但是,无奈,又想要观测 ElasticSearch 的各项指标。又想要一个干净的 ElasticSearch 实在有些强人所难。毕竟在使用 Kibana 采集 ElasticSearch 的时候,需要在 ElasticSearch 上面建立索引。

但是,还好这些索引对 ElasticSearch 的影响应该是非常小。我们把他们列在下面。

探索ElasticSearch-无任何索引数据的ElasticSearch状态(八)

可以看到使用 KibanaElasticSearch 进行监控的时候,存在4个索引。每个索引存在一个主分片,没有副本。总小大不超过1M。

把这些都列出来,做到心中有数。

各项指标

然后,我们让 ElasticSearch 运行一段时间,重点关注初始的 JVM 的占用。

JVM占用和GC

先来看看 JVM 占用。如下图所示。

探索ElasticSearch-无任何索引数据的ElasticSearch状态(八)

可以看到在没有任何索引情况下, ElasticSearch 启动所需要的内存大小大概在 400-500 之间。存在100MB左右的浮动。

通过观察 GC CountGC Duration 可以发现存在 100MB 左右的波动,看来是存在了 Young GC 导致的。

我们可以通过 jstat 命令再深入了解下当前 ElasticSearchJVM 情况。

探索ElasticSearch-无任何索引数据的ElasticSearch状态(八)

通过 jstat ,我们可以发现当前 Eden 区占用了 273 MB,每隔1秒钟会增加 10 MB多点。所以,我们可以估算大概20次左右就会触发一次 Young GC ,回收掉 Eden 区的内存。

但是,观察下图,会发现在5分钟内折线向下的只有大概6次左右。不是说每个20次左右会发生一次 Young GC ,折线向下的应该会更加密集才对啊。其实这里是因为图像采集的频率是不一样的。所以,导致这里的折线和预估的有差距。估计 Kibana 应该是 10s 采集一次 JVM 内存信息。因为我数了一下 1min 内,存在大概6,7个点。不过,目前来看修改上面的 refresh 时间好像不能改变 Kibana 的采集频率。

探索ElasticSearch-无任何索引数据的ElasticSearch状态(八)

所以,我们要学习估计的能力来总体评估 JVMGC 的状态。

CPU

明早补充下。

改变变量-JVM大小

在对照中,我们才能感受到在实验中各个元素的作用。我们尝试改变下 JVM 大小。

改变变量-索引数量

关于写作

以后这里每天都会写一篇文章,题材不限,内容不限,字数不限。尽量把自己每天的思考都放入其中。

如果这篇文章给你带来了一些帮助,可以动动手指点个赞,顺便关注一波就更好了。

如果上面都没有,那么写下读完之后最想说的话?有效的反馈和你的鼓励是对我最大的帮助。

另外打算把博客给重新捡起来了。欢迎大家来访问吃西瓜。

我是shane。今天是2019年9月9日。百天写作计划的第四十六天,47/100。

原文  https://juejin.im/post/5d7663adf265da03bc12a0f7
正文到此结束
Loading...