本文转载自微信公众号《小明菜市场》,作者小明菜市场。转载本文请联系小明菜市场公众号。Java相关问题:Elasticsearch使用ES_JAVA_OPTS环境变量配置JVM。比较常用的配置有Xms、最小堆内存、Xmx、最大堆内存。设置的建议是什么?答:这两个值最好的做法是把2g换成使用物理机或者虚拟机的一半内存分布式相关问题:分布式一般用多少个节点:答:一半分布式使用奇数节点数,因为如果我们的集群中有三个节点,ABC,如果A和B,C断开了,那么B和C会发现无法连接到A,就会把A标记为断开,并且他们可以选出新的master节点,所以分布式系统一般采用2n+1wheren>0节点,在生产系统中,最少3个节点。集群健康集群健康分为分片健康、索引健康和集群健康。指标分为三个级别:绿色、黄色和红色。Shardhealthred:至少有一个主分片没有分配。黄色:至少有一个副本分配尚未分配。绿色:主分片和次分片都正常分配。索引运行状况索引运行状况是该分片中最差的运行状况。集群健康集群健康是该集群上索引的最差健康状况。健康相关APIGET/_cluster/health获取集群的健康状态GET/_cluster/health?level=indices获取所有索引的健康状态GET/_cluster/health/获取单个索引的健康状态GET/_cluster/allocation/explain返回第一个未分配分片的原因集群不健康排查流程节点下线后,可能会因为节点数不足导致分片分配不上。在这种情况下,需要添加新的分片进行重新分配。索引配置错误,分片规则配置错误,导致分配失败。这时候需要重新配置索引,重新配置分片。磁盘空间不足:当磁盘空间不足时,也可能分配失败。这时候需要重新分配新的磁盘空间。出现的错误是DANGLING_INDEX_IMPORTE,当出现EXISTING_INDEX_RESTORED错误时,索引被关闭,需要删除和恢复索引。节点诊断节点诊断APIGET/_cat/nodes?v查看节点基本信息,即负载状态GET/_nodes/stats/indices查看节点索引详情POST/_cache/clear清除节点缓存节点内存问题Elasticserach集群可能导致长期GC集群变慢,产生OOM,甚至离线。这个时候就需要诊断了。一般有以下几种情况会导致节点内存OOM缓存占用过多内存。大量复杂的嵌套聚合可能导致频繁的GC有时需要配置一个断路器来限制请求的查询,以避免大量OOMShardElasticsearch将一个索引划分到多个分片存储。一般建议单个shard的大小为20G到50G。一般搜索数据控制在20G,日志数据50G,每个节点数据2T。相关APIGET/_cat/shards/
