Elasticsearch高内存使用率

时间:2014-03-30 18:43:37

标签: elasticsearch

我目前在我们的开发机器上使用elasticsearch。我们希望在几周内提高工作效率。今天我打出了“顶级”,我感到非常震惊。

 PID   USER      PR   NI  VIRT  RES   SHR S  %CPU %MEM    TIME+   COMMAND
 28972 elastics  20   0   27.4g 1.4g  39m S  186  4.3     2:11.19 java

弹性搜索使用如此多的内存是否正常?我从来没有这样配置过。 如果我们在一台具有32 GB RAM的机器上拥有多达5个索引,那么完美配置是什么? 我应该配置多少副本/碎片? 如何控制内存使用?

我不想得到与Solr =>相同的问题。意外停机。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

Es 1.0版之后。默认文件存储模式为Mmapfs .mamapfs以HD格式存储数据。但它使用虚拟内存概念。虽然数据存在于HD中,但它看起来像是从RAM中获取数据。它比其他文件系统更快。

因此mmapfs可能看起来消耗更多空间并且它会阻塞一些地址空间。但它是健康的并且完全没有问题。

配置分片和副本的最佳数量 refer this

要摆脱意外停机和数据丢失。请配置以下条款..

1) ulimit 因某些用户无法打开文件,必须尽可能多地增加。

2)不应预配置任何线程。以下是一些示例配置

    # Search pool
threadpool.search.type: fixed
threadpool.search.size: 5
threadpool.search.queue_size: 200

# Bulk pool
threadpool.bulk.type: fixed
threadpool.bulk.size: 5
threadpool.bulk.queue_size: 300

# Index pool
threadpool.index.type: fixed
threadpool.index.size: 5
threadpool.index.queue_size: 200

# Indices settings
indices.memory.index_buffer_size: 30%
indices.memory.min_shard_index_buffer_size: 12mb
indices.memory.min_index_buffer_size: 96mb

# Cache Sizes
indices.fielddata.cache.size: 15%
indices.fielddata.cache.expire: 6h
indices.cache.filter.size: 15%
indices.cache.filter.expire: 6h

# Indexing Settings for Writes
index.refresh_interval: 30s
index.translog.flush_threshold_ops: 50000