Elasticsearch Docker Jvm Crash
Contents
前言
今天上班日常巡检,发现一个ES
集群报Red
了,一看状态,应该是有一台机器挂了。赶紧查看问题
问题确认
登录到指定机器后,发现是磁盘满了,但问题是我使用的是/data1
盘,为啥/
目录会满掉?由于是部署到Docker
的,大概率是这里有问题。
找运维确认一下,发现是镜像内有一个/usr/share/elasticsearch/core.1
这个文件超级大,193G
直接把根目录占满了。
我们先确认一下这个是啥文件,看起来不是ES
正常产生的文件,因为没有做映射,导致直接写到了根目录,没有写到映射目录。
通过搜索,发现也有其他人遇到过这个问题,看这里说的是,在Docker
内使用Java 10
的话,有一些实验性的功能不稳定,需要设置JVM
参数:
|
|
具体的Issue
可以看这里:https://github.com/elastic/elasticsearch/issues/31425#issuecomment-402522285
暴露的问题
- 通过
Docker
部署后,有些没映射的目录和文件,会直接写到根目录,极有可能导致磁盘被写满; - 因为前期的集群调整,导致有部分索引没有
replica
,所以在一台机器挂掉后,会直接导致集群状态变为Red
,需要及时检查和告警集群内索引的复制数,防止机器挂掉后的集群不可用;