报错现象
ES在如存在2G内存的数据节点,在生产环境使用过程中会经常出现节点离线现象。导致集群频繁异常。
所以2G内存的集群,只能用于开发测试使用,切忌在生产环境中使用。
报错解析
经过实际测试发现,对于2G内存的数据节点,系统实际可以使用的内存大约为1800MB左右。
系统内存占用大约为 750MB左右。
ES进程JVM设置大约为700MB左右。
这样,剩余系统内存大约为1800-1500=300MB。
300MB在ES写入查询量较大时,会占用部分固定的堆外内存空间,导致系统剩余内存空间不足。
从而导致操作系统杀死内存占用较大的进程释放内存,也就是所说的OOM。 ES进程被杀死后就会出现节点离线现象。
解决方案
升级ES节点内存配置,生产环境至少使用4G内存节点。